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/;

到位置 / 然后看看会发生什么。

相关内容