nginx リバース プロキシがアプリケーション IP を置き換えない

nginx リバース プロキシがアプリケーション IP を置き換えない

Nginx の背後にアプリケーションがありますが、明らかに期待どおりに動作していません。そこで、ローカル環境で再現しようとしました。

背景 ウェブアプリケーションは単独で正常に動作し、/static/index.htmlをデフォルトページとして返します。例えば、アクセスするとhttp://localhost:7777//static/index.html を返し、すべて正常に動作します。{http://localhost:7777/static/index.html}

問題 プロキシの背後で同じアプリにアクセスしようとすると、機能しません。 http://localhost/app{localhost は nginx のデフォルトのサーバー名です} にアクセスすると、アプリは通常どおり /static/index.html を返し、tp に再ルーティングされてhttp://localhost/static/index.html404 を返します。

望ましい状況 アプリがプロキシの背後にある場合でも、アプリを見ることができるはずです。URLはhttp://localhost/static/index.html次のようなものになります。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/;

場所に移動して、何が起こるか見てみましょう。

関連情報