nginx 与apache的配置衔接入门

来源:互联网 发布:期货趋势分析软件 编辑:程序博客网 时间:2024/04/30 07:46
  1. upstream backend {  
  2.     server 127.0.0.1:8080;  
  3. }  
  4. upstream crmtest {  
  5.     server crmtest.aty.sohuno.com;  
  6. }  
  7. server {  
  8.         listen       80;  
  9.         server_name  chuan.aty.sohuno.com;  
  10.         proxy_set_header Host $http_host;  
  11.         proxy_set_header x-forwarded-for  $remote_addr;  
  12.         proxy_buffer_size         64k;  
  13.         proxy_buffers             32 64k;  
  14.         charset utf-8;  
  15.   
  16.         access_log  logs/host.access.log  main;  
  17.         location = /50x.html {  
  18.             root   html;  
  19.         }  
  20.     location / {  
  21.         proxy_pass backend ;  
  22.     }  
  23.           
  24.     location = /customer/straightcustomer/download {  
  25.         proxy_pass http://crmtest;  
  26.         proxy_set_header Host $proxy_host;  
  27.     }  
  28. }


当匹配到/customer/straightcustomer/download时,使用crmtest处理,到upstream就匹配到crmtest.aty.sohuno.com,这里直接转换成IP进行转发了。假如crmtest.aty.sohuno.com是在另一台nginx下配置的,ip为10.22.10.116,则$proxy_host则对应为10.22.10.116。此时相当于设置了Host为10.22.10.116。如果想让Host是crmtest.aty.sohuno.com,则进行如下设置:

 

proxy_set_header Host crmtest.aty.sohuno.com;

如果不想改变请求头“Host”的值,可以这样来设置:

proxy_set_header Host       $http_host;

但是,如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。 这种情况下,更好的方式是使用$host变量——它的值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名:

proxy_set_header Host       $host;

此外,服务器名可以和后端服务器的端口一起传送:

proxy_set_header Host       $host:$proxy_port;

如果某个请求头的值为空,那么这个请求头将不会传送给后端服务器:

proxy_set_header Accept-Encoding "";




0 0