Н.У.:
VPS с Ubuntu 14.04. На нем крутится несколько сайтов. В качестве фронт-сервера выступает nginx.
Задача: запретить обработку запросов по IP, без имени домена. Чтобы сервер обрабатывал только домены. Т.е. чтобы при в вбивании в адресной строке браузера IP сервера ничего не происходило.
Для обычного http я сделал пустышку
server {
listen 80 default_server;
server_name "";
return 444;
}
И все было хорошо, если вбить IP - запрос отклоняется. Но потом я начал переводить сайты на https. И тут возникла проблема. Если запрос
http://xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx - IP сервера) отклоняется, как и положено, то запрос вида
https://xxx.xxx.xxx.xxx ведет на первый подходящий сайт с https в конфигах nginx. Я пробовал добавить еще такой конфиг:
server {
listen 443 default_server;
server_name "";
return 444;
}
Чтобы блокировать запрос к IP и по https, но в итоге это блокирует работу всех сайтов с https. То есть, nginx почему-то вместо нужного конфига сайта, берет во всех случаях конфиг пустышки.
Есть идеи, что я делаю не так?
Вот типичный конфиг сайтов:
server {
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/site.domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.domain/privkey.pem;
server_name site.domain;
client_max_body_size 50m;
access_log /var/log/nginx/site.domain_access.log;
error_log /var/log/nginx/site.domain_error.log;
gzip on;
gzip_comp_level 5;
gzip_disable "msie6";
gzip_proxied any;
gzip_types text/plain text/css text/javascript application/x-javascript text/xml application/xml application/json;
location /static/ {
root /home/username/www/mysite/src/mysite;
expires 1d;
access_log off;
}
location /media/ {
root /home/username/www/mysite/src/mysite;
expires 1d;
access_log off;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/home/username/www/mysite/src/mysite/mysite.sock;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
uwsgi_cache uwsgi;
uwsgi_cache_valid 200 1h;
}
location /.well-known/ {
alias /opt/certbot/site.domain/.well-known/;
}
}
server {
listen 80;
server_name site.domain;
return 301 https://site.domain$request_uri;
}
server {
listen 80;
server_name www.site.domain;
return 301 https://site.domain$request_uri;
}
server {
listen 443;
server_name www.site.domain;
return 301 https://site.domain$request_uri;
}