Наше приложение работает на сервере NGiNX и логика определяет базу данных в соответствии с хостом.
Из последних нескольких в первый день, когда наш клиент переопределяет заголовок host, user-agent и другой заголовок, и NGiNX не может получить точные данные заголовка, и наше приложение сбивается с пути.
GET /api/http.php” _ 200 24 “-” “-” “-” “_” “-” to: 10.0.0.48:8080: 0.014 request_time 0.153
Обычно мы получаем
/index.php HTTP/1.1” vtermination.com 302 5 “-” “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36” “-” “_” “-” to: 10.0.0.27:8080: 0.004 request_time 0.347
Возможно, NGiNX не заменит заголовок, как host и пользовательский агент?
Переменные заголовка устанавливаются HTTP-клиентом, подключающимся к вашему серверу.
nginx никоим образом не отменяет эти заголовки, поэтому ваше приложение должно быть готово получать из них произвольные значения заголовки.
Однако, если вас беспокоит только заголовок HTTP Host
, вы можете ограничить, какие запросы nginx будет передавать вашему приложению.
Конфигурация должна выглядеть примерно так:
server {
listen 443 ssl;
listen 80;
server_name example.com;
... rest of application and SSL configuration ...
}
server {
listen 443 ssl default_server;
listen 80 default_server;
... SSL configuration with self-signed keys ...
return 404;
}
имя_сервера
в первом блоке конфигурации заставляет nginx отправлять запросы только этому блоку, когда заголовок Host
имеет значение example.com
. Вам необходимо изменить свой собственный домен (ы) на эту строку.
Второй блок server
используется для всех других значений заголовка Host
или для всех запросов без Заголовок хоста
. В этом случае мы просто отвечаем с кодом состояния HTTP 404 на каждый запрос.