У меня есть установка 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, и у вас нет блока сервера, указанного по умолчанию, поэтому он использует первый определенный.