Nginx 反向代理排除文件

Nginx 反向代理排除文件

我使用 wordpress 制作了一个登录页面,托管在 example.com 上。我有一个在 app.example.com 上运行的应用程序,该应用程序的外部 URL 为。当用户尝试访问 wordpress 文件时,它应该从 example.com 提供服务,如果该 URL 或文件夹不可用,则必须屏蔽 URL,并且必须转到远程 URL,即 example.com/$1。我尝试使用 nginx 反向代理,但它不起作用。

location / {
    try_files $uri $uri/ /index.php?$query_string @proxy;
}

location @proxy {
    proxy_pass https://example.com/$1;
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

答案1

try_files检查文件系统上是否存在实际文件。一旦找到存在的文件,它就会使用该文件来提供响应。try_files不对任何 HTTP 状态代码采取行动。

由于您/index.php的文件系统中始终有该@proxy目标,因此从未使用过。

您需要通过挂接到 WordPress 404 错误生成挂钩并在那里执行代理来实现该功能。

相关内容