Nginx устанавливает для HTTP_HOST значение punycode
У меня есть доменное имя в формате Unicode. Он настроен как punycode вserver_name
директива.
Когда я звоню$_SERVER['HTTP_HOST']
в моем PHP-коде я получаю ту же версию punycode. Как настроить Nginx для установкиHTTP_HOST
вместо этого к значению Юникода?
В качестве исправления я вызываюidn_to_utf8($_SERVER['HTTP_HOST'], 0, INTL_IDNA_VARIANT_UTS46)
в верхней части моего сценария. Но я бы хотел, чтобы это делалось автоматически вне кода моего сайта.
Ближе всего я нашел IDN и HTTP_HOST , но ему 10 лет и он предназначен для Apache.
1 ответ
Я не думаю, что в интерфейсе FastCGI, который используется между nginx и PHP, есть поддержка разных наборов символов.
Поэтому даже если бы nginx смог декодировать доменное имя в UTF-8, у него не было бы возможности правильно отправить его в PHP.
Лучше всего добавить декодированиеHTTP_HOST
заголовок в ваш фронт-контроллер.