当前位置:首页 > 服务器技术 > nginx

Nginx常见配置

特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/

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)!