Я использую WordPress в следующей конфигурации:
Varnish (порт 80) -> nginx (порт 8080)
Все это отлично работает, за исключением случаев, когда какой-либо плагин или другой пытается получить имя моего сервера, используя $_SERVER['SERVER_NAME']
. Когда это происходит, он возвращается _:8080
как имя моего сервера и порт. Вот что есть в конфиге nginx:
server {
listen 8080;
server_name _;
Что мне нужно вернуть, так это domain.com но если я изменю конфигурацию nginx, очевидно, он перестанет прослушивать порт, который должен быть (8080) (но изменение имени сервера работает нормально).
Как я могу заставить nginx слушать на 8080, но $_SERVER['SERVER_NAME']
вернуть правильный порт (точнее, не добавить неправильный порт)?
_:8080
является правильное значение для $_SERVER['SERVER_NAME']
в этой конфигурации. Он явно определен для возврата значения server_name
. Из документация:
Имя хоста сервера, под которым выполняется текущий сценарий. Если сценарий выполняется на виртуальном хосте, это будет значение, определенное для этого виртуального хоста.
Похоже, вы ищете $_SERVER['HTTP_HOST']
. Обратите внимание, что вам также не нужно настраивать Varnish для изменения Host:
заголовок запроса.
Вы можете изменить значение по умолчанию $_SERVER['SERVER_NAME']
добавив fastcgi_param
директива после то include fastcgi_params;
заявление.
Например:
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SERVER_NAME $http_host;
...
}
Значение, определенное во включаемом файле, будет автоматически перезаписано значением $http_host
.