LINUX.ORG.RU
ФорумAdmin

nginx: rewrite to ssl and deny access


0

1

Есть файлы виртуальных хостов:

domain1.com:
server {
    listen 10.12.13.14:80;
    server_name domain1.com;
    rewrite ^ https://$server_name$request_uri? permanent; }

domain2.com:
server {
    listen 10.12.13.14:80;
    server_name domain2.com;
    rewrite ^ https://$server_name$request_uri? permanent; }

https-соединение в каждом случае передается своему backend-у.

надо блокировать любые реквесты на 10.12.13.14:80 и на 10.12.13.14:443, которые не содержат domain1.com или domain2.com в URL.

★★

если у тебя больше нет виртхостов на этих айпишниках то все остальные запросы будут попадать на дефолтный

просто удали его

Skolotovich ★★★
()
Ответ на: комментарий от Skolotovich

больше вирт хостов нет. дефолтного тоже нет.

любые запросы идущие на 10.12.13.14:80 редиректятся на domain1.com

nerve ★★
() автор топика
Ответ на: комментарий от Skolotovich

смотри, я вставляю условие с if в обе части server, но при обращении по левому домену на 10.12.13.14:80 идет реврайт на правильное доменное имя и запрос преобразуется c http://qwerty.bla.bla в https://domain1.com.

если же идет запрос https://qwerty.bla.bla то там уже отбрасывает.


server {
	listen 10.12.13.14:80;
	server_name domain1.com;
	if ( $http_host != domain1.com ) {
	return 444;
	}
	rewrite ^ https://$server_name$request_uri? permanent; }
server 
	if ( $http_host != domain1.com ) {
	return 444;
	}
	include /etc/nginx/ssl/ssl.conf;
	listen 10.12.13.14:443;
	server_name domain1.com;[\code]
nerve ★★
() автор топика
Ответ на: комментарий от Skolotovich

уже нашел

Нестандартный код 444 закрывает соединение без передачи заголовка ответа.

а вообще странное поведение, получается что первый if не отрабатывает

попробуй пойти по другому пути, повесь заглушку на 80 и 443 порт с server_name _ и отдавай там красывую хтмл страничку с какимто нибудь текстом, тогда по идее все что не касается явно прописанных server_name будет уходить на нее

Skolotovich ★★★
()
Ответ на: комментарий от Skolotovich

спасибо за помощь, кажется разрулилось. создал default.conf

server {
	listen 10.12.13.14:80 default_server;
	server_name _;
	return 444;
 }
а кофиги сайтов привел к такому виду:

server {
	listen 10.12.13.14:80;
	server_name domain1.com;
	rewrite ^ https://$server_name$request_uri? permanent; }
server 
	if ( $http_host != domain1.com ) {
	return 444;
	}
	include /etc/nginx/ssl/ssl.conf;
	listen 10.12.13.14:443;
	server_name domain1.com;

nerve ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.