Nginx常见景观代理转载配置,nginx场景转载

www.yabovip4.com,专注:本文出自 “阿飞”的博客 ,固然要转发本小说,请与小编联系!
并注明来源: 

在此处享用的不是nginx的布署文件注解,而是nginx常用的转化代理配置(比方线上多域名配置,后端各类转载代理配置以及比较复杂的代理转载配置),别的还可能会对常用的转向代理参数配置举办求证。

nginx配置文件表达请参见:

1)

2)

一、代理转载

nginx的代办转发首若是在server部分实行布局。借使转正到制订域名或子域名,则必要在godaddy、Ali云等域名分析中初期安排(子)域名并钦命IP。本文中主要性陈诉通配符域名的配备,那样更具备通用性。

server部分配置为:

server {
        listen       80;
        server_name  *.yourdomain.com;
......

设若是https则修改listen部分就可以:

listen       443 ssl;

*
https配置还索要独自安插ssl部分的开始和结果,证书不均等,配置情势也是有异样,这里不做牵线。

诚如景况下,大家会有如下常见的三种须求

1)指向到商号官方网址或任何产品网(一级域名)
每一种域名单独安插一个server就可以,如HTTPS的布局如下:

    server {
        listen          443 ssl;
        server_name     www.yourdomain.com; #修改为需要的一级域名即可

        access_log      logs/ssl.access.log;
        error_log       logs/ssl.error.log crit;

        include ssl_params;

        location / {
                index  index.html index.htm index.php;
                index  proxy_set_header Host $host;
                index  proxy_set_header X-Real-IP $remote_addr;
                index  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://server_cluster; #后端服务器,具体配置upstream部分即可
        }

    }

2)指向到百货店内处系统等等(二级域名)

同1)部分的布局,只须要修改server_name部分就可以:

server_name     二级域名.yourdomain.com; #修改为需要的二级域名即可

3)二级域名下四个服务转向

比如:

今后端服务恐怕会安排在差别的server容器中,举例tomcat、php-fpm/fastcgi、第三方服务…

server部分内需先配备第2)点有的剧情,然后再配置该server下的location转载,常见location配置场景如下:

a)转载到后端汤姆cat

      location /location名称/ {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:8080/服务名/;
      }

tomcat的转化是很轻松的了,这里没有须要多说。

b)转发到php-fpm

将全体php页面包车型大巴恳求转给php-fpm管理:

      location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
      }

fastcgi_params配置:

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
#fastcgi_param  SERVER_SOFTWARE    nginx;
fastcgi_param  SERVER_SOFTWARE    nginx;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

注意!

配置不持有通用性,供给依附本人服务器及实际工作供给张开计划和调解。

此间的铺排仅提供仿照效法。

d)转发到第三方域名(第三方接口服务)

比如做开垦时,内部系统需求通过代办转载到银行职员联合会支付接口:

location /unionpay/ {
         proxy_set_header Host gateway.银联.com;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_pass https://gateway.银联.com/;
}

这里的proxy_set_header Host必须安插。

4)强制http转https访问

80端口部分server配置:

server {
        listen  80;
        server_name     api.yourdomain.com;
        location / {
                rewrite ^/(.*) https://api.yourdomain.com/$1 permanent ;
                break;
        }
        error_page 497 https://$host:$server_port$request_uri;
    }

当用户通过HTTP 80走访时,nginx将挟持转变为HTTPS 443做客。

443端口部分server配置:

server {
        listen       443 ssl;
        server_name  api.yourdomain.com;

        access_log logs/ssl.api_access.log;
        error_log  logs/ssl.api_error.log crit;

        include ssl_params;

        location / {
                proxy_pass http://tomcat_servers/$2;
                proxy_set_header Host $host:443;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location /v1.0/ {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://tomcat_servers/v1.0/;
            proxy_cookie_path /v1.0/ /;
            proxy_redirect off;
        }

}

5)后缀名定向

譬喻说,有UOdysseyL:www.abc.com/register/user.do,需求将UENVISIONL定向为uuu.abc.com/register/user.do。则能够在WWW.ABC.COM节点中如此布署:

location / {
        rewrite ^(/register)/user(.*)\..*$ 
break;

        index  index.html index.htm;
        proxy_set_header Host $host:443;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For
$proxy_add_x_亚搏app官方网站,forwarded_for;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_pass ;
}

6)在location中通过if-else分支,依照恳求参数使用不相同的proxy_pass举行转账。如:

例如url为:

之所以,Nginx中能够对location进行if决断,化解方案如下:

location /test/ {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;

        if ($arg_n ~* “web01”) {
另外还会对常用的转发代理参数配置进行说明。                  proxy_pass ;
                  break;
        }

        if ($arg_n ~* “web02”) {
                  proxy_pass 另外还会对常用的转发代理参数配置进行说明。;
                  break;
        }

        …….

}

另外还会对常用的转发代理参数配置进行说明。其中,$arg_n表示url中的n参数,$arg_p表示url中的p参数。

终极,特别要专注的是!proxy_pass
后的url无法有与乞求的url后的路线,如proxy_pass

7)Nginx支持websocket的配置

只必要加上血牙红字体部总布署就可以:

location /drsws/ {
另外还会对常用的转发代理参数配置进行说明。    proxy_set_header Host $host;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection “upgrade”;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    ……..

}

二、参数表明

1)proxy_set_header    X-real-ip $remote_addr;

在web服务器端获得用户的随机应变ip。

然则,实际上要取得用户的诚实ip,不是唯有那二个艺术,上面我们接二连三看。

 

2)proxy_set_header           X-Forwarded-For
$proxy_add_x_forwarded_for;

大家先看看这里有个X-Forwarded-For变量,那是贰个squid开采的,用于识别通过HTTP代理或负载平衡器原始IP贰个连接到Web服务器的客户机地址的非rfc规范,若是有做X-Forwarded-For设置的话,每一次通过proxy转载都会有记录,格式就是client1,
proxy1,
proxy2,以逗号隔开分离各类地点,由于他是非rfc标准,所以暗中同意是从未的,要求强制增多,在默许情形下通过proxy转载的央求,在后端看来远程地址都以proxy端的ip
。也正是说在暗中认可情形下大家选择request.getAttribute(“X-Forwarded-For”)获取不到用户的ip,借使大家想要通过这一个变量得到用户的ip,我们须要团结在nginx增多如下配置:

proxy_另外还会对常用的转发代理参数配置进行说明。set_header           
X-Forwarded-For$proxy_add_x_forwarded_for;

情趣是加多贰个$proxy_add_x_forwarded_for到X-Forwarded-For里去,注意是加多,而不是覆盖,当然由于暗中认可的X-Forwarded-For值是空的,所以大家总以为到X-Forwarded-For的值就相当$proxy_add_x_forwarded_for的值,实际受愚你搭建两台nginx在分歧的ip上,并且都施用了这段配置,这您会意识在web服务器端通过request.getAttribute(“X-Forwarded-For”)获得的将会是客户端ip和率先台nginx的ip。

那么$proxy_add_x_forwarded_for又是什么样?

$proxy_add_x_forwarded_for变量包蕴客户端供给头中的”X-Forwarded-For”,与$remote_addr两片段,他们之间用逗号分开。

举例,有七个web应用,在它此前经过了两个nginx转载,www.linuxidc.com
即用户访问该web通过两台nginx。

在率先台nginx中,使用

proxy_set_header           
X-Forwarded-For$proxy_add_x_forwarded_for;

现在的$proxy_add_x_forwarded_for变量的”X-Forwarded-For”部分是空的,所以唯有$remote_addr,而$remote_addr的值是用户的ip,于是赋值以后,X-Forwarded-For变量的值就是用户的真实性的ip地址了。

到了第二台nginx,使用

proxy_set_header           
X-Forwarded-For$proxy_add_x_forwarded_for;

现在的$proxy_add_x_forwarded_for变量,X-Forwarded-For部分含有的是用户的诚实ip,$remote_addr部分的值是上一台nginx的ip地址,于是通过那几个赋值以往现在的X-Forwarded-For的值就形成了“用户的实际ip,第一台nginx的ip”,那样就领悟了吗。

 

最后大家来看还大概有八个$http_x_forwarded_for变量,这一个变量便是X-Forwarded-For,由于事先我们说了,暗许的那几个X-Forwarded-For是为空的,所以当大家平昔动用proxy_set_header           
X-Forwarded-For$http_x_forwarded_for时会开采,web服务器端使用request.getAttribute(“X-Forwarded-For”)获得的值是null。假若想要通过request.getAttribute(“X-Forwarded-For”)得到用户ip,就非得先选取proxy_set_header           
X-Forwarded-For$proxy_add_x_forwarded_for;那样就能够获取用户真正ip。

此部分故事情节出自:

三、小结

1)通过本文,应该比较清楚的描述了一级、二级域名的配备;

2)通过各个气象,应该描述清楚了location各个场合包车型地铁转载配置;

3)援引其余小说,解说了有的参数的含义

4)各个繁复的情状,还要求依照实际的专门的学问及供给开始展览布署,这里的事例相对都比较轻巧。


0


0

翻看商酌

注意:本文出自 “阿飞”的博客 ,假诺要转载本小说,请与作者联系!
并注脚来源: …

发表评论

电子邮件地址不会被公开。 必填项已用*标注