在我之前的问题中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;
由于无法了解完整细节,所以只能进行一些猜测,希望能够有所帮助。