Приветствую, коллеги!Имеем: 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;
}
}Есть идеи, почему так происходит и как это пофиксить?
не то, чтобы я сильно в этом всем разбирался, но proxy_redirect точно должен быть off?
>Но при авторизации (php) на третьем хостедальше идет 301 редирект или что-то с js или тегом meta?
> не то, чтобы я сильно в этом всем разбирался, но proxy_redirect точно
> должен быть off?
>>Но при авторизации (php) на третьем хосте
> дальше идет 301 редирект или что-то с js или тегом meta?Да, дальше 302 и Ajax
> В двух из трёх случаев всё идет, как надоНе совсем по теме, но таки спрошу: можно работающие конфиги, а то у самого такая надобность проскакивала, и знаю что ещё понадобится, а маны читать лениво
>> В двух из трёх случаев всё идет, как надо
> Не совсем по теме, но таки спрошу: можно работающие конфиги, а то
> у самого такая надобность проскакивала, и знаю что ещё понадобится, а
> маны читать ленивоПриведенный конфиг работает в 2-случаях и не работает в третьем. Они одинаковые кроме имен, портов и путей к сертификатам. Имена резолвятся как надо, на портах слушает, кто надо, сертификаты и пути к ним валидные. В том-то и проблема :-)
...
> Приведенный конфиг работает в 2-случаях и не работает в третьем. Они одинаковые
> кроме имен, портов и путей к сертификатам. Имена резолвятся как надо,
> на портах слушает, кто надо, сертификаты и пути к ним валидные.
> В том-то и проблема :-)могетъ быть проблема в каком-либо символе из конфига в 3 - прокопипастить из 1-ого рабочего и внимательнее перебить различия.. & возможно шлифануть diff`ом ?!
> ...
>> Приведенный конфиг работает в 2-случаях и не работает в третьем. Они одинаковые
>> кроме имен, портов и путей к сертификатам. Имена резолвятся как надо,
>> на портах слушает, кто надо, сертификаты и пути к ним валидные.
>> В том-то и проблема :-)
> могетъ быть проблема в каком-либо символе из конфига в 3 - прокопипастить
> из 1-ого рабочего и внимательнее перебить различия.. & возможно шлифануть diff`ом
> ?!Делал, не помогло. Более того, если в браузере тиснуть кнопочку "Назад", хостнейм становится нормальным, $request_uri сохраняется и дальше всё работает. Но непорядок же ж!
>[оверквотинг удален]
>>> Приведенный конфиг работает в 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;
}
>> В двух из трёх случаев всё идет, как надо
> Не совсем по теме, но таки спрошу: можно работающие конфиги, а то
> у самого такая надобность проскакивала, и знаю что ещё понадобится, а
> маны читать ленивоРаботающий для третьего случая конфиг (часть) в моём последнем посте.
Спасибо, уже увидел.
В закладки добавил, как дойдут руки до настройки всего этого - буду пользовать ;)
Но при авторизации
> (php) на третьем хосте в браузер проваливается URL вида https://127.0.0.1:8082/$request_uri
> и соответсвенно, браузер получает фигу от локалхоста.Думаю, генератор ссылок в софтине на третьем хосте не (везде) проверяет хедеры или требует ручного указания реального URL. Такое встречается.