Nginx: правильно настроить proxy_path.Проблема с URL - PullRequest
2 голосов
/ 11 июня 2011

У меня есть несколько серверов, работающих на виртуальных машинах.И у меня есть один запущенный nginx для передачи запросов на эти серверы.Например, http://mydomain.com/wiki при запросе прокси на http://192.168.122.3. 192.168.122.3 запускает apache с DocumentRoot = / var / www / wiki.Все работает нормально, но при загрузке страницы все пути там указывают на / вместо / wiki (например, <img src="/bla-bla-bla"/>, not /wiki/bla-bla-bla").Кажется, это нормально для apache, но не для браузера - он не может загружать изображения и т. Д. Изменение DocumentRoot в apache на / var / www и передача / wiki из nginx не помогают - mediawiki начинает перенаправление в / wiki, перенаправляет nginxвернемся к apache и т. д., прежде чем он скажет о зацикленных перенаправлениях.Другие проекты, работающие на виртуальных машинах, такие как Redmine (ruby on rails), действуют так же.

Есть ли способ решить эту проблему?Есть ли правильный способ для прокси URL-адресов, таких как / subdir, на другие серверы?

Это раздел сервера nginx:

server {
    listen   192.168.122.7:80;
    server_name  mydomain.com;

    access_log  /var/log/nginx/localhost.access.log;

    location / {

    }
    location /wiki/ {
        proxy_pass http://192.168.122.3/;
    }
}

1 Ответ

2 голосов
/ 12 июня 2011

Вы должны использовать директиву proxy_redirect .

location /wiki/ {
    proxy_pass http://192.168.122.3/;
    proxy_redirect default;
}
...