昨日,网站域名备案出了点问题,导致整个站点都不能访问,因处于假期阶段,不能通过正常渠道快速解决,不得已域名必须先解析到国外的VPS服务器才能在最短时间里让用户正常使用。
在VPS装上nginx后,就需要用到反向代理功能,把被屏蔽的域名代理到另一可以正常访问的域名上(IP地址也一样),刚开始考虑的是只做一个重定向功能(rewrite),但后来发现直接重定向无法将POST的参数正确的带过去,所以这种方式行不通,必须的用另一种方式--反向代理。下面将配置代码贴出来,以备日后使用:
# 重定向代码 server { listen 80; server_name www.domain.cn; #charset koi8-r; #access_log logs/host.access.log main; if ( $host = 'www.dumain.cn' ) { rewrite ^/(.*)$ http://www.new_domain.cn/$1 permanent; } } # 反向代理代码 server { listen 80; server_name www.domain.cn; # proxy_redirect http://new_domain.com /; proxy_redirect http://new_domain.com http://$host:$server_port # 防止后端server在返回refresh或location的时候,host为new_domain.com location / { proxy_pass http://www.new_domain.cn:8080; proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Cookie $http_cookie; # 代理cookie,防止session会丢失 chunked_transfer_encoding off; } }
.