Страница 1 из 2

Не верный порт при использовании Apache 2.4 + Nginx 1.21

Добавлено: 11 авг 2022, 21:59
WinterSilence
https://localhost/
возвращает
'SERVER_PORT' => '80',
вместо 443. При использовании только Apache 2.4 или Nginx 1.21 все ок.

Re: Не верный порт при использовании Apache 2.4 + Nginx 1.21

Добавлено: 12 авг 2022, 00:26
SagePointer
WinterSilence писал(а): 11 авг 2022, 21:59
https://localhost/
возвращает
'SERVER_PORT' => '80',
вместо 443. При использовании только Apache 2.4 или Nginx 1.21 все ок.
Так и должно быть, Apache в этом случае находится за обратным прокси и принимает соединения от nginx по незашифрованому протоколу (т.к. шифрование трафика localhost <-> localhost не имеет никакого смысла). Полагаться на SERVER_PORT не стоит, он далеко не всегда имеет что-то общее с реальностью (реальный порт будет возвращаться, если установить UseCanonicalPhysicalPort On, и он по умолчанию 8080).

Re: Не верный порт при использовании Apache 2.4 + Nginx 1.21

Добавлено: 22 авг 2022, 21:27
WinterSilence
SagePointer мне ты ничего нового не открыл, но пользователи переносят вину за этот косяк конфигурации на цмс/фреймворки, что не есть гуд.

Re: Не верный порт при использовании Apache 2.4 + Nginx 1.21

Добавлено: 23 авг 2022, 00:00
SagePointer
WinterSilence писал(а): 22 авг 2022, 21:27 SagePointer мне ты ничего нового не открыл, но пользователи переносят вину за этот косяк конфигурации на цмс/фреймворки, что не есть гуд.
Где конкретно в конфигурации косяк? Кто вообще в здравом уме полагается на переменную SERVER_PORT и прячет при этом сайт за обратным прокси?

Re: Не верный порт при использовании Apache 2.4 + Nginx 1.21

Добавлено: 24 авг 2022, 10:13
WinterSilence

Re: Не верный порт при использовании Apache 2.4 + Nginx 1.21

Добавлено: 24 авг 2022, 12:02
SagePointer
WinterSilence писал(а): 24 авг 2022, 10:13 SagePointer https://github.com/yiisoft/yii2/issues/19493
Читаем документацию и видим:
Returns the server port number. If a port is specified via a forwarding header (e.g. 'X-Forwarded-Port') and the remote host is a "trusted host" the that port will be used (see $portHeaders), otherwise the default server port will be returned.
А теперь внимание, вопрос: а в каком-то вообще дистрибутиве заголовок X-Forwarded-Port в дефолтной конфигурации nginx выставляется?
Он тоже весьма ненадёжен, если nginx у вас в свою очередь за Cloudflare, то схема эта тут же даст сбой, потому что Cloudflare тоже не передаёт его.
Что же, Cloudflare такой косячный? Нет, читаем теперь стандарт RFC 7239, который описывает эти заголовки, и видим там упоминания заголовков X-Forwarded-For и X-Forwarded-Proto, и не видим там опять же никакого X-Forwarded-Port.
Делаем из этого выводы, что никто этот ваш стандарт де-факто не поддержал, за который вы топите.
Есть хоть одна причина включать этот заголовок в стандартный конфиг OpenServer, если там и так уже передаётся заголовок X-Forwarded-Proto, который адекватные и вменяемые люди и используют для определения схемы http/https, а не порт? С учётом, что костыли в виде X-Forwarded-Port с 99% не будут работать на других хостингах без долбёжки в техподдержку, которая в 99% случаев пошлёт нафиг и под кривой код не будет для вас конфиг переписывать.

Re: Не верный порт при использовании Apache 2.4 + Nginx 1.21

Добавлено: 24 авг 2022, 12:26
WinterSilence
SagePointer Делаем из этого выводы, что никто этот ваш стандарт де-факто не поддержал, за который вы топите.

префикс "X-" как бэ намекает, что они все не стандартные, этот заголовок в случае OpenServer вообще не задан т.ч. используется SERVER_PORT

Проблема возникает именно при совместном использовании Apache 2.4 + Nginx 1.21, по отдельности они работают без проблем.

Данный заголовок возвращается некоторыми облачными сервисами, например, AWS

Re: Не верный порт при использовании Apache 2.4 + Nginx 1.21

Добавлено: 24 авг 2022, 12:44
SagePointer
WinterSilence писал(а): 24 авг 2022, 12:26 Данный заголовок возвращается некоторыми облачными сервисами, например, AWS
А некоторыми - не возвращается :lol:
И да, не вижу НИ ОДНОЙ причины существования этого заголовка, если для нестандатных портов порт всё равно передаётся в заголовке Host, а схема при проксировании - в X-Forwarded-Proto. Если вам зачем-то этот заголовок так сильно нужен (с поправкой на то, что код этот не будет переносим между серверами и будет сильно полагаться на конфиг), никто не запрещает отредактировать конфиг nginx и добавить его передачу.

Re: Не верный порт при использовании Apache 2.4 + Nginx 1.21

Добавлено: 24 авг 2022, 12:59
WinterSilence
SagePointer "этот заголовок в случае OpenServer вообще не задан т.ч. используется SERVER_PORT". с чего ты вообще взял, что в данном случае он используется я хз.

Re: Не верный порт при использовании Apache 2.4 + Nginx 1.21

Добавлено: 24 авг 2022, 13:06
SagePointer
WinterSilence писал(а): 24 авг 2022, 12:59 SagePointer "этот заголовок в случае OpenServer вообще не задан т.ч. используется SERVER_PORT". с чего ты вообще взял, что в данном случае он используется я хз.
Господи, учи матчасть как работает обратное проксирование, и не пиши идиотизма.