nginx: как получить сервер на случай отсутствия заголовка Host:? - PullRequest
0 голосов
/ 30 августа 2018

У меня есть специальный блок server {} для людей, которые используют IP-адрес в заголовке хоста (server_name ~^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+;), и это прекрасно работает. Я хотел бы другой блок сервера для одного, когда заголовок хоста вообще не предоставляется. Я тестировал с:

telnet localhost 80
GET /foobar HTTP/1.0

И я вижу из своей регистрации (которая имеет "$http_host" в log_format) это проявляется как "-" (дефис не подчеркивается). Но этот блок сервера:

server {
        listen 80;
        listen [::]:80;

        # hyphen not underscore
        server_name ~^-*$;

        root /var/www/no-host;
        default_type text/plain;
        index foo.ey
        location / {
                try_files $uri /foo.ey;
        }
}

Никогда не используется, вместо этого запрос переходит к значению по умолчанию, которое имеет server_name _; (подчеркивание не дефис).

Мой пример использования аналогичен сайту парковки домена, я хочу, чтобы многие имена хостов обрабатывались, и все допустимые имена следует искать в базе данных, но я хочу проверять некоторые незаконные имена на ранних этапах.

1 Ответ

0 голосов
/ 30 августа 2018

Ответ есть в документации: https://nginx.org/en/docs/http/server_names.html
Искать слово "пусто"

Исправлено: server_name "";

- Бармар

...