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;
910 location / {
11 root /usr/local/application/html;
12 index index.html;
13 }
1415 error_page 500502503504 /50x.html;
16 location = /50x.html {
17 root html;
18 }
1920 }
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 }
910 location /api/ {
11 proxy_pass http://localhost:8080/;12 }
1314 error_page 500502503504 /50x.html;
15 location = /50x.html {
16 root html;
17 }
1819 }
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 }
1314 location /service/ {
15 proxy_pass http://backends/;16 }
1718 error_page 500502503504 /50x.html;
19 location = /50x.html {
20 root html;
21 }
2223 }
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、其他配置
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、参考网站
http://www.cnblogs.com/yun007/p/3739182.html
https://blog.csdn.net/jiangguilong2000/article/details/52278255
原文:https://www.cnblogs.com/mao2080/p/9562943.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!