2015-03-21 3 views
0

У меня есть веб-сервер nginx, настроенный на порт 80. Приложение My (SonarQube) работает на порте 9000. Когда я запрашиваю http://www.example.com/sonar/, я хочу, чтобы меня перенаправили на Sonar, поэтому я добавил это в свой nginx конфигурации:Прокси-сервер Nginx для приложения на localhost

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, но я не могу заставить его работать.

+0

/sonar/and/Sonar/находятся в той же области example.com? –

ответ

3

Проблема в линии proxy_pass. В вашем случае, это должно быть:

proxy_pass http://127.0.0.1:9000; 

Но НЕ:

proxy_pass http://127.0.0.1:9000/; 

В proxy_pass директивы, если указать URI, который / в вашем случае, согласованный URI /sonar/ будет заменен, как указанный /.

+0

Говорит Ошибка 404: страница не найдена, когда я изменяю эту строку. – jvermeulen

+0

Можете ли вы попытаться получить доступ к 'http: //www.example.com: 9000/sonar /', чтобы проверить, есть ли ошибка 404? – Landys

+0

Это было частью проблемы, в сочетании с настройкой пути префикса для самого sonarQube. – jvermeulen

Смежные вопросы