Nginx常见配置
1、配置重定向
1 server { 2 listen 80; 3 server_name test.com; 4 rewrite ^(.*)$ https://$host$1 permanent; 5 }
2、配置443端口
1 server { 2 listen 443 ssl; 3 server_name example.com www.example.com; 4 5 ssl_certificate /usr/local/application/cert/server.crt; 6 ssl_certificate_key /usr/local/application/cert/server.key; 7 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 8 ssl_ciphers HIGH:!aNULL:!MD5:!DH; 9 10 location / { 11 root /usr/local/application/html; 12 index index.html; 13 } 14 15 error_page 500 502 503 504 /50x.html; 16 location = /50x.html { 17 root html; 18 } 19 20 }
3、配置反向代理
现在web的趋势已经是动静分离模式,比如:我们访问http://localhost(静态网页),但是通常通过ajax访问后台接口的时候是不同端口或者ip的,这个时候会存在跨域问题,所以需要做下反向代理,比如我们请求后台接口:http://localhost/api/userController/getList,实际上Nginx遇到/api/会将请求转发给具体的后台8080端口的服务并等待服务给出最终响应。
1 server { 2 listen 80; 3 server_name location; 4 5 location / { 6 root /usr/local/application/html; 7 index index.html; 8 } 9 10 location /api/ { 11 proxy_pass http://localhost:8080/; 12 } 13 14 error_page 500 502 503 504 /50x.html; 15 location = /50x.html { 16 root html; 17 } 18 19 }
4、配置负载均衡
1、Nginx的upstream目前支持的分配算法一共有3种
1)、轮询 ——1:1 轮流处理请求(默认)
每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。
1 upstream backends { 2 server localhost:8080; 3 server localhost:8081; 4 } 5 server { 6 listen 80; 7 server_name location; 8 9 location / { 10 root /usr/local/application/html; 11 index index.html; 12 } 13 14 location /service/ { 15 proxy_pass http://backends/; 16 } 17 18 error_page 500 502 503 504 /50x.html; 19 location = /50x.html { 20 root html; 21 } 22 23 }
2)、权重 ——you can you up
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。
1 upstream backends { 2 server localhost:8080 weight 20; 3 server localhost:8081 weight 80; 4 }
3)、ip_hash算法
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。
1 upstream backends { 2 ip_hash; 3 server localhost:8080; 4 server localhost:8081; 5 }
2、第三方Nginx的upstream目前支持的分配算法一共有2种(目前还未验证)
1)fair
fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。
1 upstream backends { 2 server localhost:8080; 3 server localhost:8081; 4 fair; 5 }
2)url_hash
与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。
1 upstream backends { 2 server localhost:8080; 3 server localhost:8081; 4 hash $request_uri; 5 hash_method crc32; 6 }
其中,hash_method为使用的hash算法,需要注意的是:此时,server语句中不能加weight等参数。
5、upstream配置详解
1、upstream的配置
server address [parameters]
address也必选,可以是主机名、域名、ip或unix socket,也可以指定端口号。
parameters是可选参数,可以是如下参数:
down:表示当前server已停用,暂时不参与负载。
backup:表示当前server是备用服务器,只有其它非backup后端服务器都挂掉了或者很忙才会分配到请求。
weight:表示当前server负载权重,权重越大被请求几率越大。默认是1.
max_fails和fail_timeout一般会关联使用,如果某台server在fail_timeout时间内出现了max_fails次连接失败,那么Nginx会认为其已经挂掉了,从而在fail_timeout时间内不再去请求它,fail_timeout默认是10s,max_fails默认是1,即默认情况是只要发生错误就认为服务器挂掉了,如果将max_fails设置为0,则表示取消这项检查。
2、举例说明
1 upstream backends { 2 server localhost:8080 weight=5; 3 server localhost:8081 max_fails=3 fail_timeout=30s; 4 server localhost:8082; 5 server localhost:8083; 6 }
6、配置禁止访问目录或文件
1 location ^~ /default.html { 2 deny all; 3 } 4 5 location ^~ /path{ 6 deny all; 7 }
也可以把 deny all 改换成 return 404,这样将返回 404 而不是 403 Forbidden,更有“欺骗性”。
7、参考网站
http://www.cnblogs.com/yun007/p/3739182.html
https://blog.csdn.net/jiangguilong2000/article/details/52278255