Nginx
點擊子目錄 proxy_pass 中的連結返回 404 NGINX
好的,我會盡力解釋這一點。我已成功設置到伺服器塊(網站 A)
/blog/
上的子目錄位置,該位置成功在子域伺服器塊(網站 B)example.com
上顯示我的部落格,網址為.blog.example.com.au``example.com/blog/
但是,當我點擊首頁上的任何連結
example.com/blog/
時,當它應該連結到網站 B 上的文章時,它會顯示網站 A 的 404。期望的行為: 顯示時
example.com/blog/article
的連結blog.example.com/article``example.com/blog/article
實際行為: 顯示404時
example.com/blog/article
的連結example.com/article``example.com/article
我想確保出現在通過位置塊
/blog/
傳遞到網站 B 的每個請求上。/blog/
這是我目前的網站 A 為網站 B 上的部落格提供服務的伺服器塊:
server { server_name example.com; ... location ^~ /blog/ { proxy_pass https://blog.example.com.au/; proxy_set_header Host blog.example.com.au; } # This is needed to correctly serve static files for Website B and not have same 404 behaviour as explained above location /assets/ { proxy_pass https://blog.example.com.au/assets/; } # This is needed to correctly serve static files for Website B and not have same 404 behaviour as explained above location /content/ { proxy_pass http://blog.example.com.au/content/; } }
如果它有助於網站 A 和 B 都被反向代理並在同一個 conf 文件中完美地工作:
upstream Website_A { server Website_A:8000; } upstream Website_B { server Website_B:2368; } ...
使用正確的基本 URL 配置您的後端,以便生成正確的連結。
由於您似乎將 Ghost 用於您的部落格,因此該選項稱為
url
."url": "https://example.com.au/blog/"
當然,將它直接代理給ghost而不是兩次代理它會更有意義。
server { server_name example.com.au; # ... location /blog/ { proxy_pass http://Website_B:2368; } }