Nginx URL 代理到服务器

Nginx URL 代理到服务器

我试图

  • 将来自 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。如果没有正则表达式匹配 和$1proxy_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;
}

相关内容