nginx 反向代理

昨日,网站域名备案出了点问题,导致整个站点都不能访问,因处于假期阶段,不能通过正常渠道快速解决,不得已域名必须先解析到国外的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;   
    }  
}

.

原文地址:https://www.cnblogs.com/weiok/p/5426317.html