nginx反向代理不替換應用程式IP

nginx反向代理不替換應用程式IP

我有一個應用程式位於 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.htmlURL 應該類似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/;

到位置 / 看看會發生什麼。

相關內容