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

nginx по умолчанию выполняет все запросы к виртуальному хосту, что и должно быть.

У меня есть установка nginx на моем сервере со следующим файлом конфигурации

worker_processes  2;
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    access_log    logs/mysite.access.log;
    error_log     logs/mysite.error.log;

    gzip            on;
    gzip_min_length 1100;
    gzip_buffers    4 8k;

    sendfile      on;
    tcp_nopush    on;
    tcp_nodelay   on;
    keepalive_timeout  75 20;

    server {
        listen 80;
        server_name website.com www.website.com;

        location / {
            include proxy.conf;
            proxy_pass  http://127.0.0.1:5000;
            proxy_redirect  default;

            if ($request_uri ~* "\.(ico|css|js|gif|jpe?g|png)$") {
                expires max;
                break;
            }
        }
    }

    server {
        listen 443 default ssl;
        server_name website.com www.website.com;

        ssl_certificate     /etc/ssl/localcerts/website.com.crt;
        ssl_certificate_key /etc/ssl/localcerts/website.com.key;

        location / {
            include proxy.conf;
            proxy_pass  http://127.0.0.1:5000;
            proxy_redirect  default;

            if ($request_uri ~* "\.(ico|css|js|gif|jpe?g|png)$") {
                expires max;
                break;
            }
        }
    }
}

Это должно означать, что когда я захожу на сайт «website.com», он отправляет запрос на 127.0.0.1:5000, и я увижу, что там работает веб-сайт, верно? Проблема в том, что если я посещаю IP-адрес сервера, я вижу, что сайт работает на сайте website.com.

Исходя из Apache VHosts, это неправильно ... Посещение IP-адреса должно показать мне файл HTML nginx по умолчанию или 404. Не виртуальный хост website.com.

Что я сделал не так?

Вы предположили, что Nginx ведет себя как Apache. :)

http://nginx.org/en/docs/http/server_names.html http://wiki.nginx.org/NginxHttpCoreModule#server_name

В принципе. Если нет подходящего блока сервера, он будет использовать блок сервера с соответствующей директивой прослушивания, используя флаг [default | default_server], а если ничего не будет найдено, он будет использовать первый определенный блок сервера.

В вашем случае у вас нет блокировки сервера, соответствующего IP, и у вас нет блока сервера, указанного по умолчанию, поэтому он использует первый определенный.