Nginx位置代理传主页一处,其他所有路由,另一处

use*_*120 1 nginx proxypass nginx-location

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

我只想将我的主页发送到一个 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;
    } 
Run Code Online (Sandbox Code Playgroud)

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

    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;    
    } 
Run Code Online (Sandbox Code Playgroud)

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

谢谢您的帮助!

Ric*_*ith 5

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

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

location = / {
    proxy_pass http://website;
    ...
}
location / {
    proxy_pass http://interaction;
    ...
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此文档

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