• 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;
     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

      http://www.cnblogs.com/cinlap/p/9322934.html

  • 相关阅读:
    struts2_20140720
    使用jsp生成验证码
    JAVA笔记1-00
    Myeclipse 2014配置SVN详细图解
    排查IDEA 全局搜索快捷键Ctrl +Shift+F不起作用的原因和解决方法
    linux,java.net.UnknownHostException:XXX:XXX: Name or service not known
    mac使用技巧
    谈创业
    小白3步完成替换tomcat域名
    linux下yum安装redis以及使用
  • 原文地址:https://www.cnblogs.com/mao2080/p/9562943.html
Copyright © 2020-2023  润新知