Вопрос: Получение правильного ответа SERVER_PORT на php-fpm через nginx и лак


Цель состоит в том, чтобы узнать PHP о правильном веб-сервере server_port.

Настройка:

nginx на порту 443 обратное проксирование на лак на порту 80 обратное проксирование на nginx на порт 8008 и запуск php-fpm в качестве fastcgi.

удары 80 или 443 работают отлично, за исключением того, что $ _SERVER ['SERVER_PORT'] в php всегда показывает 8008 по умолчанию. Я могу скопировать код fastcgi_param server_port, но тогда он будет корректным только для 80 или 443, но не для обоих.

# default
fastcgi_param  SERVER_PORT        $server_port;
# harcode to 80
fastcgi_param  SERVER_PORT        80;

Как я могу получить надлежащий внешний порт для сервера, доступный для php?


5
2018-04-06 03:48


Источник




Ответы:


Нашел мой собственный ответ

В SSL nginx это ...

   proxy_set_header X-Forwarded-Proto https;

затем в лаке, это ...

 sub vcl_recv {
   if (req.http.X-Forwarded-Proto == "https" ) {
     set req.http.X-Forwarded-Port = "443";
   } else {
     set req.http.X-Forwarded-Port = "80";
     set req.http.X-Forwarded-Proto = "http";
   }
 }

то в последнем nginx это ...

fastcgi_param  SERVER_PORT        $http_x_forwarded_port;

15
2018-04-06 05:26



Я специально создал аккаунт, чтобы поблагодарить за это. Я не могу его проголосовать, так как у меня пока нет доверия. Я изо всех сил пытаюсь получить nginx + ssl + лак + magento, работающий в течение длительного времени. На самом деле не могу вас поблагодарить. Этот ответ должен быть далеко, намного выше в результатах поиска. Есть много неудобных сообщений, в которых виноват magento за то, что вы вызываете циклы re-direct, но это ответ, чтобы заставить его работать. - Raina Gustafson