LINUX.ORG.RU
ФорумAdmin

nginx в бэкенде — как заставить передавать в приложение 80-й порт?

 ,


0

1

Такая структура. Висит на 80-м порту хоста mypublicserver фронтенд на lighttpd, который распихивает запросы, какие куда.

На 8443-м порту того же mypublicserver висит nginx.

lighttpd для определённых адресов делает прокси-запрос на nginx.

Так вот, в ряде приложений (например, phpMyAdmin) запрос http://mypublicserver/ превращается в http://mypublicserver:8443/

Я так понимаю, что nginx отдаёт fcgi-серверу порт, на котором он сам висит, а приложение, обнаружив нестандартный порт, само на него редиректится.

Ещё хитрее с friendica — она пытается получать css/js/картинки (baseurl) по сгенерёному адресу вида http://_:8443/ — т.е. налицо ещё и имя хоста подставляется из server_name _;

Можно ли это всё как-нибудь корректно побороть?

★★★★★

И, да, вариант перевести всё скопом на один из серверов не предлагать — legacy :)

KRoN73 ★★★★★
() автор топика

Связка nginx + redmine(со своим сервером) вела себя примерно так же. Были проблемы с отправкой форм и статическими файлами кое-где. Фиксил вот так:

location /
{
    [...]
    #proxy_set_header  Host              $host;
    proxy_set_header   Host              $http_host;
    [...]
}

, где $host == «mypublicserver» заменено на $http_host == «mypublicserver:80» Т.е. в запросе к бэкенду будет прописан порт в заголовке Host кроме самого имени сервера. С lighttpd дела не имел, но ,вероятно, нужные заголовки можно выставить вот этим модулем.

fjoe
()

Я так понимаю, что nginx отдаёт fcgi-серверу порт, на котором он сам висит

Да.

Можно ли это всё как-нибудь корректно побороть?

Да. Закоментируй в блоке fcgi конфига ngnix эту строчку:

fastcgi_param  SERVER_PORT        $server_port;
LamerOk ★★★★★
()
Ответ на: комментарий от KRoN73

Блин. Всё равно, непонятно по каким критериям, но нет-нет, да вылезет, то порт, то отсутствие имени сервера.

Один случай явно поймал — если в конце имени каталога нет слеша, то происходит редирект на URL со слешом на конце, но на нестандартный порт.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от LamerOk

Это потому что nginx перенаправляет все запросы /path на /path/

Мне так и нужно. Вопрос, как сделать это, чтобы порт не подставлялся :)

KRoN73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.