108,nginx的多级代理(day08)

需求:hba.changyoufun.com-121.201.125.239(gd1)--hk1--co(alpha*.ggdev.co)  广东代理--->香港--->加拿大

由于idc机房在加拿大,所以经常会配些nginx多级反向代理到国内.(不做代理client就得*,或者说是丢包很严重.)

下面的Nginx配置我只写80的,443的忽略,简化nginx的配置,参数也不一一列举不然太多了.

gd1的反向代理配置:(就是一个反向代理)

cat hba.changyoufun.com.conf server{  listen 121.201.125.239:80;     server_name hba.changyoufun.com;  access_log /data/weblogs/hba.changyoufun.com.access.log main;  index index.html index.php index.htm;  location / {     proxy_set_header X-Forwarded-For $remote_addr;     proxy_set_header X-Real-IP $remote_addr;     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     proxy_set_header Host $host;     proxy_redirect off;     proxy_read_timeout 600;     proxy_connect_timeout 600;     proxy_pass http://hba80;    } } Upstream配置(代理的是hk1的内网ip):  upstream hba80 {   server 10.105.3.222:80;    }  upstream hba443 {   server 10.105.3.222:443;    }   hk1的反向代理配置:(也是一个nginx反向代理) cat hba.changyoufun.com.conf server{  listen 10.105.3.222:80;  server_name hba.changyoufun.com;  access_log /data/weblogs/hba.changyoufun.com.access.log main;  index index.html index.php index.htm;  location / {     proxy_set_header X-Forwarded-For $remote_addr;     proxy_set_header X-Real-IP $remote_addr;     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     proxy_set_header Host $host;     proxy_redirect off;     proxy_read_timeout 600;     proxy_connect_timeout 600;     proxy_pass http://hba80;    } }   Upstream配置(代理的是alpha*.ggdev.co域名的ip地址): upstream hba80 {   server 216.66.17.34:80;    }  upstream hba443 {   server 216.66.17.34:443;    } co机房原先已经存在alpha*.ggdev.co域名的配置,只需要copy一份alpha*.ggdev.co的nginx配置,将域名替换为hba.changyoufun.com即可.    

co的两份nginx配置:

nginx和php的web版:

cat hba.changyoufun.com.conf server{   listen 216.66.17.34:80;  server_name hba.changyoufun.com ;  access_log /data/weblogs/hba.changyoufun.com.access.log main;  index index.html index.php index.htm; root /product/*/alpha/web/htdocs; location ~ ^/.*(do|php)$ {   fastcgi_pass php_proxy;   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   fastcgi_param PATH_INFO $fastcgi_script_name;   include /etc/nginx/fastcgi_params;  } }   cat alpha*.ggdev.co.conf server{   listen 216.66.17.34:80;  server_name alpha*.ggdev.co;  access_log /data/weblogs/alpha*.ggdev.co.access.log main;  index index.html index.php index.htm; root /product/*/alpha/web/htdocs; location ~ ^/.*(do|php)$ {   fastcgi_pass php_proxy;   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   fastcgi_param PATH_INFO $fastcgi_script_name;   include /etc/nginx/fastcgi_params;  } }   注释:其实nginx的代理很简单,很多时候是没想明白,既然代理alpha*.ggdev.co,前面两级代理配置了这个域名不就ok了?仔细想发现nginx代理根据ip:端口找域名,然后在location匹配到的location段再找upstream段,再根据upstream段的ip+port找下级域名,最后发现最后一级没有相匹配的域名就报404了,所以最后一层也要配上相匹配的域名配置.                        

 

上一篇:PAT 甲级 1020 Tree Traversals (25 分)(二叉树已知后序和中序建树求层序)


下一篇:PHP-FPM 的运作模式