2012-04-16 4 views
10

У меня nginx настроен на прокси-трафик https на HTTP-сервер, запущенный на том же компьютере.Nginx proxy https to http на нестандартном порту?

Все работает нормально, когда я настраиваю nginx для прослушивания/прокси-сервера с порта https 443. Но я действительно хочу слушать нестандартный порт. Когда я настраиваю нестандартный порт, nginx получает запрос и отправляет его на свой HTTP-сервер, как и следовало ожидать, но сервер отвечает перенаправлением HTTP обратно в браузер, который сообщает ему перенаправить на сервер https: //. com/someurl ". Я имею в виду, что URL-адрес перенаправления выглядит хорошо, за исключением того, что у него отсутствует правильный порт. Мне не хватает заголовка HTTP, который мне нужно установить в прокси?

В частности, я запускаю http-пример треков . http://getontracks.org Если это имеет значение

Мой (работает по стандартному порту) конфигурации Nginx сервер:

location /{ 
    proxy_pass http://localhost:50000; 
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; 
    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_set_header X-Forwarded-Proto https; 
    proxy_redirect off; 
} 

ответ

1

Th. это скорее проблема приложения, выполняющегося на хосте (хостах) вверх, а не конфигурации веб-сервера (если, конечно, ваша конфигурация веб-сервера восходящего сервера не содержит правил перезаписи). Различные приложения обрабатывают эти ситуации по-разному: некоторым требуется явный параметр конфигурации, указывающий им фактический URL-адрес, к которому может быть применено приложение, некоторые используют определенные заголовки HTTP, а некоторые используют другие HTTP-заголовки.

Поскольку треки - это приложение Rails, вы можете получить более знающие ответы, если добавить к соответствующему вопросу соответствующий тег .

+0

Спасибо. Я нашел некоторые сообщения на форуме, предлагающие установить заголовок HTTP-X-Forwarded-Port, хотя это похоже на еще более нестандартный «нестандартный» заголовок. Я пробовал настроить это в конфигурации nginx без везения. Я полагаю, в любом случае, как вы говорите, что приложение, работающее на хосте, должно знать и предпринимать действия над чем-то подобным. – kenen

24

Проблема связана с линией -

proxy_set_header Host $host; 

Ваш веб-сервер (WEBrick), в свою очередь в том числе это при выдаче ответа редиректа.

Вы можете изменить его, чтобы включить нестандартный порт -

proxy_set_header Host $host:$server_port; 

, которые должны решить эту проблему.

+0

Очень хорошо. Это разрешило мою проблему с флеш-приложением, работающим за обратным прокси-сервером nginx, пытающимся создать правильный URL-адрес, в том числе. non-starndard port, как описано в [флеш-фрагменте 35] (http://flask.pocoo.org/snippets/35/), без необходимости касаться этого фрагмента. –

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