Как правильно настроить nginx?

Что нужно:
При обращении к domain.ru:любой порт - выдавать 403 Forbidden
При обращении к dacha.domain.ru:80 - редирект на https
При обращении к dacha.domain.ru:443 - Собственно показываем сайт.
Сейчас наковырял вот так:
server {
	listen dacha.domain.ru:80;
	server_name dacha.domain.ru;	
	
	if ($host = 'dacha.domain.ru') {
		return 301 https://dacha.domain.ru$request_uri;
		break;
	}
	if ($host != 'dacha.domain.ru') {
		return 403;
		break;
	}
	
}

Но вот тут начинается магия, при первом обращении - показывает 403, если нажать F5 - делает редирект на dacha.domain.ru.

На 443 порту настройки:
server {
	listen dacha.domain.ru:443 ssl;
	server_name dacha.domain.ru;	

	root /var/www/html;
	index index.php index.html index.htm index.nginx-debian.html;
	server_name dacha.domain.ru;

Тут вообще мрак, ему все равно вообще откуда зашли, он открывает страницу просто с предупреждением, что сертификат принадлежит другому домену.... Помоги, я уже устал бороться с nginx (
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 2
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
Может не надо с ним бороться, надо читать документацию и использовать примеры?
spoiler
server {
  listen 80;
  server_name dacha.domain.ru;
  return 301 https://dacha.domain.ru$request_uri;
}

и для HTTPS
spoiler
server {
  listen 443 ssl;
  server_name dacha.domain.ru;	
  root /var/www/html;

# SSL encryption parameters
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	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:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
	ssl_prefer_server_ciphers on;

	ssl_certificate		/etc/xxxxx/fullchain.pem;
	ssl_certificate_key	/etc/xxxxx/privkey.pem;
	ssl_dhparam         /etc/nginx/ssl/dhparam.pem;
}
Ответ написан
Комментировать
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
domain.ru:любой порт - это не к нгинксу. Вы можете, конечно, завернуть на фаерволле диапазон портов, например, на какой-нибудь 81-ый, для которого в нгинксе создать отдельный серверный блок с 403 отлупом - но это какая-то крайне странная идея, в целом. Обычно неиспользуемые или нуждающиеся в ограничении доступа порты просто закрывают на фаерволле.

Безусловный редирект на HTTPS в виде if`а - это костыль, юзайте стандартный return 301.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы