Nginx 反向代理排除文件

Nginx 反向代理排除文件

我有一個使用 wordpress 完成的登陸頁面,並託管在 example.com 上。我有一個應用程式在外部網址上的 app.example.com 上運行。當使用者嘗試存取 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 錯誤產生掛鉤來實現該功能並在那裡執行代理程式。

相關內容