Назад | Перейти на главную страницу

nginx соответствует 127.0.0.1 до *: 80

У меня есть следующие две директивы сервера, включая conf.d / *. Conf. Когда я перехожу на сервер через общедоступный внешний IP-адрес, кажется, что он соответствует серверу 127.0.0.1, поскольку запись добавляется в файл localhost.access_log. Я ожидал, что это произойдет только при доступе через localhost. Я ожидал, что с внешнего IP-адреса будет соответствовать .host.tld server_name директива или default_server параметр.

Нужно ли мне обеспечивать порядок загрузки файлов conf? Почему прослушивание 127.0.0.1 должно быть сопоставлено таким образом? Это вторая директива местоположения, которая пуста?

server {
    listen 127.0.0.1;
    server_name localhost;

    access_log /var/log/nginx/localhost.access_log main;
    error_log /var/log/nginx/localhost.error_log info;

    root /var/www/localhost/htdocs;
}

server {
    listen 80 default_server;
    server_name .host.tld;

    access_log /var/log/nginx/host.access_log main;
    error_log /var/log/nginx/host.error_log info;

    root /var/www/host/htdocs;

    location = / {
            index index.php index.html;
    }

    location / {
    }
}

Изменение обоих listen директивы 80 и добавив 127.0.0.1 имя в server_name из localhost сегмент зафиксировал это:

server {
    listen 80;
    server_name localhost;

    access_log /var/log/nginx/localhost.access_log main;
    error_log /var/log/nginx/localhost.error_log info;

    root /var/www/localhost/htdocs;
}

server {
    listen 80 default_server;
    server_name .host.tld;

    access_log /var/log/nginx/host.access_log main;
    error_log /var/log/nginx/host.error_log info;

    root /var/www/host/htdocs;

    location = / {
            index index.php index.html;
    }

    ...
}