URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 8183
[ Назад ]

Исходное сообщение
"Nginx как прокси и 3 виртуальникa Apache"

Отправлено Gogol , 30-Сен-19 16:48 
Приветствую, коллеги!

Имеем: nginx на ssl порту. Он должен проксировать запросы на три виртуальных хоста Apachre, которые живут на 127.0.0.1 на разных портах. Конфиги идентичные, за исключением имён хостов, сертификатов и адресов, куда проксировать.
В двух из трёх случаев всё идет, как надо. Но при авторизации (php) на третьем хосте в браузер проваливается URL вида https://127.0.0.1:8082/$request_uri и соответсвенно, браузер получает фигу от локалхоста.

Вот конфиг:

server {
        listen       х.х.х.х:443 ssl;
        server_name  <hostname>;

        access_log  <path_to_log>;

        ssl    on;
        ssl_certificate      <path_to_cert>;
        ssl_certificate_key  <path_to_key>;

        location / {
          proxy_pass      http://127.0.0.1:8082;
          proxy_redirect off;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Forwarded-Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        if ($host != $server_name) {
            return 404;
    }
}

Есть идеи, почему так происходит и как это пофиксить?


Содержание

Сообщения в этом обсуждении
"Nginx как прокси и 3 виртуальникa Apache"
Отправлено Аноним , 30-Сен-19 19:01 
не то, чтобы я сильно в этом всем разбирался, но proxy_redirect точно должен быть off?
>Но при авторизации (php) на третьем хосте

дальше идет 301 редирект или что-то с js или тегом meta?


"Nginx как прокси и 3 виртуальникa Apache"
Отправлено Gogol , 30-Сен-19 21:40 
> не то, чтобы я сильно в этом всем разбирался, но proxy_redirect точно
> должен быть off?
>>Но при авторизации (php) на третьем хосте
> дальше идет 301 редирект или что-то с js или тегом meta?

Да, дальше 302 и Ajax


"Nginx как прокси и 3 виртуальникa Apache"
Отправлено DiabloPC , 30-Сен-19 19:23 
> В двух из трёх случаев всё идет, как надо

Не совсем по теме, но таки спрошу: можно работающие конфиги, а то у самого такая надобность проскакивала, и знаю что ещё понадобится, а маны читать лениво


"Nginx как прокси и 3 виртуальникa Apache"
Отправлено Gogol , 30-Сен-19 21:42 
>> В двух из трёх случаев всё идет, как надо
> Не совсем по теме, но таки спрошу: можно работающие конфиги, а то
> у самого такая надобность проскакивала, и знаю что ещё понадобится, а
> маны читать лениво

Приведенный конфиг работает в 2-случаях и не работает в третьем. Они одинаковые кроме имен, портов и путей к сертификатам. Имена резолвятся как надо, на портах слушает, кто надо, сертификаты и пути к ним валидные. В том-то и проблема :-)


"Nginx как прокси и 3 виртуальникa Apache"
Отправлено Аноним , 30-Сен-19 22:06 
...
> Приведенный конфиг работает в 2-случаях и не работает в третьем. Они одинаковые
> кроме имен, портов и путей к сертификатам. Имена резолвятся как надо,
> на портах слушает, кто надо, сертификаты и пути к ним валидные.
> В том-то и проблема :-)

могетъ быть проблема в каком-либо символе из конфига в 3 - прокопипастить из 1-ого рабочего и внимательнее перебить различия.. & возможно шлифануть diff`ом ?!


"Nginx как прокси и 3 виртуальникa Apache"
Отправлено Gogol , 30-Сен-19 22:14 
> ...
>> Приведенный конфиг работает в 2-случаях и не работает в третьем. Они одинаковые
>> кроме имен, портов и путей к сертификатам. Имена резолвятся как надо,
>> на портах слушает, кто надо, сертификаты и пути к ним валидные.
>> В том-то и проблема :-)
> могетъ быть проблема в каком-либо символе из конфига в 3 - прокопипастить
> из 1-ого рабочего и внимательнее перебить различия.. & возможно шлифануть diff`ом
> ?!

Делал, не помогло. Более того, если в браузере тиснуть кнопочку "Назад", хостнейм становится нормальным, $request_uri сохраняется и дальше всё работает. Но непорядок же ж!


"Nginx как прокси и 3 виртуальникa Apache"
Отправлено Gogol , 30-Сен-19 23:25 
>[оверквотинг удален]
>>> Приведенный конфиг работает в 2-случаях и не работает в третьем. Они одинаковые
>>> кроме имен, портов и путей к сертификатам. Имена резолвятся как надо,
>>> на портах слушает, кто надо, сертификаты и пути к ним валидные.
>>> В том-то и проблема :-)
>> могетъ быть проблема в каком-либо символе из конфига в 3 - прокопипастить
>> из 1-ого рабочего и внимательнее перебить различия.. & возможно шлифануть diff`ом
>> ?!
> Делал, не помогло. Более того, если в браузере тиснуть кнопочку "Назад", хостнейм
> становится нормальным, $request_uri сохраняется и дальше всё работает. Но непорядок же
> ж!

Я победил это!
Вот так работает:
location / {
          proxy_pass      http://127.0.0.1:8082;
          proxy_redirect off;
      proxy_set_header Host $server_name:$server_port;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Forwarded-Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }


"Nginx как прокси и 3 виртуальникa Apache"
Отправлено Gogol , 01-Окт-19 15:58 
>> В двух из трёх случаев всё идет, как надо
> Не совсем по теме, но таки спрошу: можно работающие конфиги, а то
> у самого такая надобность проскакивала, и знаю что ещё понадобится, а
> маны читать лениво

Работающий для третьего случая конфиг (часть) в моём последнем посте.


"Nginx как прокси и 3 виртуальникa Apache"
Отправлено DiabloPC , 02-Окт-19 09:17 
Спасибо, уже увидел.
В закладки добавил, как дойдут руки до настройки всего этого - буду пользовать ;)

"Nginx как прокси и 3 виртуальникa Apache"
Отправлено abi , 01-Окт-19 16:36 
Но при авторизации
> (php) на третьем хосте в браузер проваливается URL вида https://127.0.0.1:8082/$request_uri
> и соответсвенно, браузер получает фигу от локалхоста.

Думаю, генератор ссылок в софтине на третьем хосте не (везде) проверяет хедеры или требует ручного указания реального URL. Такое встречается.