我有一個應用程式位於 nginx 後面,但顯然沒有按預期工作。所以我嘗試在本地環境中複製。
背景 Web 應用程式本身運作良好,並返回 /static/index.html 作為預設頁面。例如在訪問時http://本地主機:7777/返回 /static/index.html 並且一切正常。 {http://localhost:7777/static/index.html}
問題
當我嘗試透過代理程式存取相同應用程式時,它不起作用。存取
http://localhost/app
{ localhost 是 nginx 中預設伺服器的名稱 } 時,應用程式會照常傳回 /static/index.html 並重新路由 tphttp://localhost/static/index.html
並傳回 404。
期望的情況
即使該應用程式位於代理程式後面,我也應該能夠看到該應用程式。而不是http://localhost/static/index.html
URL 應該類似http://localhost/localhost:7777/static/index.html
nginx.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /app/ {
proxy_pass http://localhost:7777/;
proxy-redirect off;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_buffering off;
client_max_body_size 0;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_pass_header P3P;
}
有什麼想法如何實現這一點?
答案1
如果根據 nginx.conf 將代理限制為位置 /app/,那麼 /static/index.html 沒有被代理就不足為奇了。添加一個
proxy_pass http://localhost:7777/;
到位置 / 看看會發生什麼。