Nginx 代理本地主机上的应用程序
Nginx proxy to application on localhost
我在端口 80 上设置了一个 nginx 网络服务器。
我的 (SonarQube) 应用程序在端口 9000 上运行。当我请求 http://www.example.com/sonar/ 我希望被重定向到 Sonar,所以我将它添加到我的 nginx 配置中:
location /sonar/ {
proxy_pass http://127.0.0.1:9000/;
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_read_timeout 1800;
proxy_connect_timeout 1800;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
但是,当我转到 http://www.example.com/sonar/ 时,此页面上的每个 link 都会转到 http://www.example.com/ 而不是http://www.example.com/sonar/。所以样式表、css 脚本和 link 都被破坏了。我怎样才能解决这个问题?我尝试了 rewrite
,但似乎无法正常工作....
问题出在 proxy_pass
行。在您的情况下,它应该是:
proxy_pass http://127.0.0.1:9000;
但不是:
proxy_pass http://127.0.0.1:9000/;
在 proxy_pass
指令中,如果您指定的 URI 在您的例子中是 /
,则匹配的 URI /sonar/
将被替换为指定的 URI /
。
我在端口 80 上设置了一个 nginx 网络服务器。 我的 (SonarQube) 应用程序在端口 9000 上运行。当我请求 http://www.example.com/sonar/ 我希望被重定向到 Sonar,所以我将它添加到我的 nginx 配置中:
location /sonar/ {
proxy_pass http://127.0.0.1:9000/;
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_read_timeout 1800;
proxy_connect_timeout 1800;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
但是,当我转到 http://www.example.com/sonar/ 时,此页面上的每个 link 都会转到 http://www.example.com/ 而不是http://www.example.com/sonar/。所以样式表、css 脚本和 link 都被破坏了。我怎样才能解决这个问题?我尝试了 rewrite
,但似乎无法正常工作....
问题出在 proxy_pass
行。在您的情况下,它应该是:
proxy_pass http://127.0.0.1:9000;
但不是:
proxy_pass http://127.0.0.1:9000/;
在 proxy_pass
指令中,如果您指定的 URI 在您的例子中是 /
,则匹配的 URI /sonar/
将被替换为指定的 URI /
。