Nginx 代理的行为与 A 记录不同

Nginx 代理的行为与 A 记录不同

我有一个域,其中有一个通配符 A 记录到 IP(61.61.61.61)(不受我的控制)。

因为我想控制域中的某些页面,所以我认为通过 nginx 代理所有数据很容易。但看起来这不是相同的行为。相反,当我尝试加载之前正确显示的站点主索引时,它现在将我重定向到另一个站点。

我认为这是因为 nginx 没有代理所有数据或没有转发某些标头。

我这样配置了 nginx

server {
    server_name test.com;
    root /var/www/test.com/;
    index  index.html index.htm index.php;

    merge_slashes on;

    location /landers {
        if (!-e $request_filename) {
            rewrite ^.*$ /index.php last;
        }
    }

    location / {
        proxy_pass http://61.61.61.61:80;
    }

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        # edit below to fix config display
        fastcgi_param SCRIPT_FILENAME /var/www/test.com$fastcgi_script_name;
    }
}

第三方服务器无法识别该请求,这可能是它将我重定向到该服务器上的另一个站点的原因。

[编辑]

更清楚一点。我希望 URL /landers 托管在我的计算机上。这就是为什么我在 nginx 中为此设置了不同的位置。

对 test.com 的其余请求应该发送到正确的 IP 地址(并​​由第三方服务器处理)。

当我将 IP 地址作为 A 记录时,一切都运行正常。但现在 nginx 代理请求,我得到了 301 重定向(来自 IP 为 61.61.61.61 的服务器)。

通常情况下,我不应该得到 301 返回,而应该得到代理页面。这就是为什么我猜测对 61.61.61.61 服务器的请求与直接访问(使用 A 记录而不是代理到该服务器)有些不同。这让我认为代理 HTTP 请求与非代理版本有些不同,因此 61.61.61.61 服务器无法匹配其服务器上的正确虚拟主机。

希望这能让事情更清楚一点。

相关内容