@PendalF89

Почему Nginx перенаправляет неизвестные субдомены на главный домен?

Все неизвестные поддомены типа https://test.site.com Nginx направляет на главный домен https://site.com. Притом, перенаправляет только по https, по test.site.com выдаёт 404 ошибку (как и ожидается). Я хочу сделать так, чтобы неизвестные поддомены вне зависимости от протокола выдавали 404 ошибку как по http.

Вот конфиг сайта:
server {
    listen 80;
    server_name site.com
	spb.site.com
	ekb.site.com;
    return 301 https://$host$request_uri;
}
server {
    listen 80;
    server_name www.site.com;
    return 301 https://site.com$request_uri;
}
server {
	listen 443 ssl http2;
	server_name www.site.com;
	
	ssl_certificate /etc/letsencrypt/live/site.com-0002/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/site.com-0002/privkey.pem;
	
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_prefer_server_ciphers on;
	ssl_dhparam /etc/ssl/certs/dhparam.pem;
	ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
	ssl_session_timeout 1d;
	ssl_session_cache shared:SSL:50m;
	ssl_stapling on;
	ssl_stapling_verify on;
	add_header Strict-Transport-Security max-age=15768000;
	
	return 301 https://site.com$request_uri;
}
server {
    listen 443 ssl http2;
    server_name site.com
	spb.site.com
	ekb.site.com;

	set $subdomain "msk";
    if ($host ~ "^(.*)\.site\.com$") {
        set $subdomain $1;
    }
	
	ssl_certificate /etc/letsencrypt/live/site.com-0002/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/site.com-0002/privkey.pem;
	
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_prefer_server_ciphers on;
	ssl_dhparam /etc/ssl/certs/dhparam.pem;
	ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
	ssl_session_timeout 1d;
	ssl_session_cache shared:SSL:50m;
	ssl_stapling on;
	ssl_stapling_verify on;
	add_header Strict-Transport-Security max-age=15768000;
	
	root   /var/www/site.com/frontend/web;
    index  index.php;
    error_log  /var/log/nginx/site.com.errors.log;
	
	location ~* ^.+\.(rss|atom|jpg|jpeg|gif|png|ico|rtf|js|css|svg)$ {
		expires max;
	}

    location / {
		rewrite ^([^.]*[^/])$ $1/ permanent;
        try_files $uri $uri/ /index.php?$args;
    }

    location ~(?<sitemap>sitemap.*\.xml)$ {
	    alias /var/www/site.com/console/sitemaps/data/$subdomain/$sitemap;
	}

    location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass unix:/run/php/php7.4-fpm.sock;
	}
	
	location ~ /.well-known {
		allow all;
	}
}


И конфиг nginx.conf:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log off;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;

	gzip_vary on;
	gzip_proxied any;
	gzip_comp_level 6;
	gzip_buffers 16 8k;
	gzip_http_version 1.1;
	gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;

	##
	# Virtual Host Configs
	##

	# Default server
    server {
        return 404;
    }
    # Other servers
	include /etc/nginx/conf.d/*.conf;
}
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Заведите серверный блок, который будет обрабатывать всё, для чего не нашлось соответствия в server_name других конфигов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы