Задать вопрос
@ApolloHoTs

Как на NGINX сделать с «www.https» на «https» для поддомена?

Здравствуйте.

Имеем: debian 10, nginx 1.16.1, wildcard ssl сертификат (выдан для *.site.bz site.bz). Apache нет.
Есть поддомен test2.site.bz, попробовал настроить ssl соединение.
С www.test2.site.bz и test2.site.bz Редиректит правильно на httpS://test2.site.bz
Но нет редиректа с httpS://www.test2.site.bz на httpS://test2.site.bz, ругается на сертификат и остаётся на httpS://www.test2.site.bz. Подскажите как правильно сделать и можно ли?

Конфиг nginx для поддомена test2.site.bz:
server {
    listen              80;
    server_name "~^(www\.)?(.*)$" ;
    return 301 https://test2.site.bz;
}
server {
    listen              443 ssl http2;
	charset utf-8;
	
	# Include common ssl params
    include snippets/ssl.conf;   

    # Include certificate params
    include snippets/certs/site.bz;

	# Корневая директория проекта
	root /var/www/test2.site.bz;
	# Индексы
	index index.html index.htm index.php;
  
	location = /favicon.ico {
			log_not_found off;
			access_log off;
	}

	location = /robots.txt {
			allow all;
			log_not_found off;
			access_log off;
	}

	access_log /var/log/nginx/test2.site.bz_access.log;
	error_log /var/log/nginx/test2.site.bz_error.log;
  
	# Обработка запросов
	# $uri - существует ли конкретный файл
	# $uri/ - существует ли директория
	# /index.php?$args - если это не запрос на существующий файл или директорию, то перебрасываем на роутер WordPress (это и есть то, что надо для пермалинков)
	location / {
			try_files $uri $uri/ /index.php?$args;
	}

	# Обрабатываем PHP
	location ~ \.php$ {
			fastcgi_split_path_info ^(.+\.php)(/.+)$;
			#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
			fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
			fastcgi_index index.php;
			fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
			include fastcgi_params;
	}
	
	# Все остальное

        # Запрещаем доступ к .htaccess
        location ~ /\.ht {
                deny all;
        }

        # Просим кешировать статику на Х дней, не писать в логи
        location ~*
        ^.+\.(js|css|swf|xml|txt|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
                access_log off;
                log_not_found off;
                expires 30d;
        }
}


Конфиг SSL:
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:30m;
ssl_session_tickets on;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
  • Вопрос задан
  • 2063 просмотра
Подписаться 2 Простой 5 комментариев
Решения вопроса 1
@ApolloHoTs Автор вопроса
Ответ:
Wildcard сертификат не работает на домены 4-ого уровня, например: httpS://www.test2.site.ru
Работает только до 3-го уровня, например: httpS://test2.site.ru

Решение:
Брать отдельный сертификат.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Сделан server{ только для 80 порта, а для 443 порта server не сделан
Ответ написан
Ваш ответ на вопрос

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

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