Nginx location proxy pass 主页一个地方,其他所有路由,另一个地方

Nginx location proxy pass homepage one place, all other routes, another place

我需要你的帮助,我一直无法找到执行此操作的确切方法。

我只想将我的主页发送到一个 proxypass 位置

    location / {
        proxy_pass http://website;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    } 

然后将所有其他路由(我不知道它们都是什么,它将是动态的)发送到另一个代理通道。

    location /* {
        proxy_pass http://interaction;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
    } 

我知道 * 是错误的(因为它不起作用),但它只是代表 /anything 或 /whatever 或 /idontknowyet

感谢您的帮助!

您不清楚哪些 URI 构成了您的主页(/ 除外)。

假设不需要资源文件,也没有发生重定向,可以使用完全匹配位置块来匹配主页,使用默认位置块来匹配其他所有内容:

location = / {
    proxy_pass http://website;
    ...
}
location / {
    proxy_pass http://interaction;
    ...
}

详情见this document

但是可能还有其他的URI(比如css和js文件)构成了首页。您也需要为这些添加位置块,或者可能使用匹配主页所需的所有 URI 的正则表达式位置块。