使用 Nginx 的 proxy_pass 时无法登录或执行任何操作

使用 Nginx 的 proxy_pass 时无法登录或执行任何操作

在我之前的问题中nginx 将除特定文件和子目录之外的所有内容解析(指向)到不同的 ip我询问了如何将我的白标网站及其页面解析到不同的 IP,但保留一些子文件夹和文件在我的服务器上以供加载。事实证明,这样做非常简单,最终的解决方案如下:

location /robots.txt {
   alias {DOCROOT};
}
server_name {SERVERNAME};
location ~ /\.php$ {
    proxy_pass  10.10.10.10 <== whitelabel ip;
    proxy_set_header Host            {SERVERNAME};
    proxy_set_header X-Forwarded-For myaccount.whitelabelsite.com;
    proxy_redirect off;
    proxy_set_header Connection "Keep-Alive";
    proxy_buffering off;
}

因此,在这里我从我的域名下的白标网站加载所有内容,但仍保留 robots.txt 从我的托管和一些其他文件加载。

现在的问题是,我使用此方法时无法登录 whitelabel 网站上的帐户。

因此{SERVERNAME}指令基本上就是我的域名mydomain.com,当我尝试登录时,mydomain.com/aff/panel它会打开页面,它不会输出任何错误,而只是刷新页面,什么也不做。如果有人想进行预订或发送电子邮件表格,情况也是如此。它会打开页面,但实际上不执行任何操作。

当我使用 DNS 重定向时,一切都正常,但现在却不行了。我是否遗漏了一些代理信息或转发到 whitelabel 和从 whitelabel 转发的标头发布/获取操作?

答案1

如果主机设置不正确,则位于“whitelabelsite.com”的后端应用程序可能无法正常工作。将主机标头设置为您要代理的主机名,而不是您自己的主机名。

proxy_set_header Host myaccount.whitelabelsite.com

您确定需要 吗proxy_redirect off?这可能会阻止后端网站发送重定向。

此外,可能与问题无关,但X-Forwarded-For应该是客户端IP地址。nginx有一个特殊的变量可以正确添加IP。

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

由于无法了解完整细节,所以只能进行一些猜测,希望能够有所帮助。

相关内容