Nginx代理到localhost上的应用程序

时间:2015-03-21 00:04:20

标签: nginx sonarqube

我在端口80上设置了nginx webserver。 我的(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/时,此页面上的每个链接都会转到http://www.example.com/而不是http://www.example.com/sonar/。因此样式表,css脚本和链接都被破坏了。我怎样才能解决这个问题?我试过了rewrite,但我似乎无法让它发挥作用......

1 个答案:

答案 0 :(得分:3)

问题出在proxy_pass行。在你的情况下,它应该是:

proxy_pass  http://127.0.0.1:9000;

但不是:

proxy_pass  http://127.0.0.1:9000/;

proxy_pass指令中,如果您在案例中指定/的URI,则匹配的URI /sonar/将替换为指定的/