我试图
将来自 www.example.com 和 example.com 的所有流量重定向到 old-www.website.com
代理来自 example.com/forum (和 www)的所有流量到论坛服务器 @ 192.168.100.100
我尝试了以下配置,但它总是让我回到我的旧网站。当我删除时,论坛location /
无法加载,我得到了404's
由于服务器正在尝试加载文件@example.com/
而不是example.com/forum
server {
listen 80;
server_name www.example.com example.com;
location /forum/ {
proxy_pass http://192.168.100.100/;
proxy_redirect off;
proxy_set_header Host $host;
}
location / {
return 302 $scheme://www.old-site.com;
}
}
我怎样才能解决这个问题?
答案1
问题/
在于您的声明中存在额外内容proxy_pass
。这导致 nginx/
始终将其用作论坛的 URI。
尝试这个:
location ~ /forum(/.+)? {
proxy_pass http://192.168.100.100$1;
proxy_redirect off;
proxy_set_header Host $host;
}
这里我假设你希望 URLhttp://www.example.com/forum/something
被代理到http://192.168.100.100/something
。如果没有正则表达式匹配 和$1
,proxy_pass
它将代理到http://192.168.100.100/forum/something
。
答案2
试试这个,这是一个将客户端重定向到新域名的非常简单的例子:
server {
listen 80;
listen 443 ssl;
server_name www.old-name.com;
return 301 $scheme://www.new-name.com$request_uri;
}