nginx proxy_pass на локальный хост

Я пытаюсь использовать proxy_pass в nginx для пересылки запросов на другой порт на локальном хосте, например:

location /foo {
    rewrite ^/foo/(.*) /$1 break;
    proxy_pass http://127.0.0.1:8080/;
}
location /bar {
    rewrite ^/bar/(.*) /$1 break;
    proxy_pass http://localhost:8080/;
}
location /blah {
    rewrite ^/blah/(.*) /$1 break;
    proxy_pass http://192.168.77.56:8080/;
}

Так что работает только последний. Первые два выдают ошибку о недоступности страницы. Я знаю, что конечная точка работает, так как я могу перейти непосредственно к localhost: 8080 и увидеть ожидаемый результат.

Любая идея, что я делаю неправильно?

[Редактировать]: Дальнейшее просветление... Кажется, что строка перезаписи как-то связана с этим. Использование его, как у меня здесь, похоже, работает с IP-адресами, отличными от локального хоста, т. Е. Он удаляет /blah из пути и сохраняет остальные, когда отправляет их в конечный пункт назначения. Если я удалю строку перезаписи, я могу проксировать на локальный хост (конечно, потеряв другие отступы в URL-адресе).


person Greg    schedule 08.09.2013    source источник


Ответы (1)


Это сработало:

location /blah {
    rewrite ^/blah/(.*) /$1 break;
    proxy_pass http://$server_addr:8080;
}
person Greg    schedule 14.09.2013