zoukankan      html  css  js  c++  java
  • nginx配置及使用

    偶尔会用到nginx部署项目,记录nginx配置备忘。主要有端口、地址及别名,代理转发和https配置。

    配置文件为nginx.conf。

    部署http项目:

    1.找到http下的server配置项

    端口和servername配置,即访问地址中http://localhost:9003

    1 listen       9003; 
    2 server_name  localhost;

    2.配置项目

    项目结构如下

    nginx增加location配置项:

    1         location /dist {
    2             root E:/code/02project/rt-poc;  # root 时 root路径+location路径映射到服务器文件
    3             index index.html;
    4         }

     访问地址为:http://localhost:9003/dist/index.html

    1         # alias 时 location代替root路径映射到服务器文件上
    2         location /webapp {
    3             alias E:/code/02project/rt-poc/dist;
    4             index index.html;
    5         }

     访问地址为:http://localhost:9003/webapp/index.html

    可以浏览文件

    1         #autoindex 开启后可以显示目录
    2         location /images {
    3             root   E:/code/00test/picture;
    4             autoindex on;
    5         }
    代理转发
    1         # 代理转发
    2         location /my-web {
    3             proxy_pass  http://localhost:9003/dist;
    4         }

    访问 http://localhost:9003/my-web/index.html  即跳转为   http://localhost:9003/dist/index.html

    部署https项目:

    1.找到https下的server配置项,设置默认的443端口及ssl证书地址,location配置和http一样,这里也可以转发http下的server,使其能以https的方式访问

    1        listen       443 ssl;
    2        server_name  localhost;
    3 
    4        ssl_certificate      E:/code/03server/nginx-1.16.0/ssl/nginx_https.crt;
    5        ssl_certificate_key  E:/code/03server/nginx-1.16.0/ssl/nginx_https.key;

    转发http服务

    1 # 转发http服务,变为https
    2  location /tour {
    3      proxy_pass  http://localhost:9003/webapp;
    4 }

    nginx相关命令:

    1 // window下 进入nginx目录,启动cmd
    2 start nginx               -- 启动
    3 nginx -s reload           -- 重载配置
    4 nginx -s quit             --退出
    5 nginx -s stop

    nginx.conf文件完整内容,可参考进行配置。

      1 #user  nobody;
      2 worker_processes  1;
      3 
      4 #error_log  logs/error.log;
      5 #error_log  logs/error.log  notice;
      6 #error_log  logs/error.log  info;
      7 
      8 #pid        logs/nginx.pid;
      9 
     10 
     11 events {
     12     worker_connections  1024;
     13 }
     14 
     15 
     16 http {
     17     include       mime.types;
     18     default_type  application/octet-stream;
     19 
     20     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
     21     #                  '$status $body_bytes_sent "$http_referer" '
     22     #                  '"$http_user_agent" "$http_x_forwarded_for"';
     23 
     24     #access_log  logs/access.log  main;
     25 
     26     sendfile        on;
     27     #tcp_nopush     on;
     28 
     29     #keepalive_timeout  0;
     30     keepalive_timeout  65;
     31 
     32     #gzip  on;
     33 
     34     server {
     35         listen       9003;
     36         server_name  localhost;
     37 
     38         #charset koi8-r;
     39 
     40         #access_log  logs/host.access.log  main;
     41 
     42         # location / {
     43         #     root   html;
     44         #     index  index.html;
     45         # }      
     46 
     47         #autoindex 开启后可以显示目录
     48         location /images {
     49             root   E:/code/00test/picture;
     50             autoindex on;
     51         }
     52 
     53         # alias 时 location代替root路径映射到服务器文件上
     54         location /tour {
     55             alias E:/code/02project/ni-tour/ni-tour-web/dist;
     56             index index.html;
     57         }
     58 
     59         # root 时 root路径+location路径映射到服务器文件上
     60         location /dist {
     61             root E:/code/02project/smrt-poc/smrt-poc-tbox-html;
     62             index index.html;
     63         }
     64 
     65         # 代理转发
     66         location /smrt {
     67             proxy_pass  http://localhost:9003/dist;
     68         }
     69 
     70         location / {
     71             root   E:/code/00test/picture;
     72             autoindex on;
     73         }
     74 
     75         #error_page  404              /404.html;
     76 
     77         # redirect server error pages to the static page /50x.html
     78         #
     79         error_page   500 502 503 504  /50x.html;
     80         location = /50x.html {
     81             root   html;
     82         }
     83 
     84         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
     85         #
     86         #location ~ .php$ {
     87         #    proxy_pass   http://127.0.0.1;
     88         #}
     89 
     90         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
     91         #
     92         #location ~ .php$ {
     93         #    root           html;
     94         #    fastcgi_pass   127.0.0.1:9000;
     95         #    fastcgi_index  index.php;
     96         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
     97         #    include        fastcgi_params;
     98         #}
     99 
    100         # deny access to .htaccess files, if Apache's document root
    101         # concurs with nginx's one
    102         #
    103         #location ~ /.ht {
    104         #    deny  all;
    105         #}
    106     }
    107 
    108 
    109     # another virtual host using mix of IP-, name-, and port-based configuration
    110     # 可以监听不同的端口
    111     server {
    112        listen       9005;
    113        server_name  localhost;
    114 
    115        location /smrt {
    116             alias E:/code/02project/smrt-poc/smrt-poc-tbox-html/dist;
    117             index index.html;
    118         }
    119     }
    120 
    121     #HTTPS server
    122     server {
    123        listen       443 ssl;
    124        server_name  localhost;
    125 
    126        ssl_certificate      E:/code/03server/nginx-1.16.0/ssl/nginx_https.crt;
    127        ssl_certificate_key  E:/code/03server/nginx-1.16.0/ssl/nginx_https.key;
    128 
    129        ssl_session_cache    shared:SSL:1m;
    130        ssl_session_timeout  5m;
    131 
    132        ssl_ciphers  HIGH:!aNULL:!MD5;
    133        ssl_prefer_server_ciphers  on;
    134 
    135        location /images {
    136            root   E:/code/00test/picture;
    137            autoindex on;
    138        }
    139 
    140        location /smrt {
    141             alias E:/code/02project/smrt-poc/smrt-poc-tbox-html/dist;
    142             index index.html;
    143         }
    144 
    145         # 转发http服务,变为https
    146         location /tour {
    147             proxy_pass  http://localhost:9003/tour;
    148         }
    149     }
    150     
    151 }
    配置https需要的ssl证书地址 可参考https://blog.csdn.net/sunroyfcb/article/details/83592553

    缓存配置
    server前添加如下配置项:
    1 proxy_cache_path /opt/map-web-model/map-web-buildings-cache levels=1:2 keys_zone=buildingscache:10m max_size=10g inactive=300m use_temp_path=off;

    相关配置说明如下:

    • /path/to/cache 本地路径,用来设置Nginx缓存资源的存放地址
    • levels 默认所有缓存文件都放在同一个/path/to/cache下,但是会影响缓存的性能,因此通常会在/path/to/cache下面建立子目录用来分别存放不同的文件。假设levels=1:2,Nginx为将要缓存的资源生成的key为f4cd0fbc769e94925ec5540b6a4136d0,那么key的最后一位0,以及倒数第2-3位6d作为两级的子目录,也就是该资源最终会被缓存到/path/to/cache/0/6d目录中
    • key_zone 在共享内存中设置一块存储区域来存放缓存的key和metadata(类似使用次数),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key
    • max_size 最大cache空间,如果不指定,会使用掉所有disk space,当达到配额后,会删除最少使用的cache文件
    • inactive 未被访问文件在缓存中保留时间,本配置中如果60分钟未被访问则不论状态是否为expired,缓存控制程序会删掉文件。inactive默认是10分钟。需要注意的是,inactive和expired配置项的含义是不同的,expired只是缓存过期,但不会被删除,inactive是删除指定时间内未被访问的缓存文件
    • use_temp_path 如果为off,则nginx会将缓存文件直接写入指定的cache文件中,而不是使用temp_path存储,official建议为off,避免文件在不同文件系统中不必要的拷贝
    • proxy_cache 启用proxy cache,并指定key_zone。另外,如果proxy_cache off表示关闭掉缓存。

    使用:

    1 location /buildings {
    2         proxy_cache buildingscache;
    3 alias /opt/map-web-model/buildings;
    4 autoindex off;
    5 }

    常见错误
    1.访问服务出现以下错误:
    The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.
    这种问题常见于nginx做代理,设置了add_header 'Access-Control-Allow-Origin' '*';
    而被代理的服务本身已经设置了'Access-Control-Allow-Origin' '*'; 会出现了header重复,删掉代理的即可。




  • 相关阅读:
    基于UML和ASP.NET实现三层B/S结构系统开发
    通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行(转)
    GOOGLE浏览器(已经可以下载啦)
    虽然很老,但是还是挺有用,而且经常要看。META
    ASP.NET保持用户状态的九种选择
    设计ASP.NET应用程序的七大绝招
    将更智能的 ASP.NET 文件下载体验内置到您的 Web 应用程序中 (MSDN)
    据说是民间最准确的算命法则
    ASP.NET是否是微软继MFC之后最无用的框架?
    宁波单身公寓出租
  • 原文地址:https://www.cnblogs.com/jyughynj/p/11207890.html
Copyright © 2011-2022 走看看