LINUX.ORG.RU
ФорумAdmin

NginX: Один сервер; Два ip; Запросы без Host'а;


0

1

Есть примерно такой конфиг NginX, работаем в паре с апачом на 81м. На второй server{} заруливаются все запросы на домен public.com, остальные домены и прямые запросы по IP - на первый server{}

upstream backend { server 127.0.0.1:81; }

server {
        root 		/var/www/direct;
        location / { try_files $uri @backend; } 
        location = /favicon.ico { access_log off; log_not_found off; }
       	location = /robots.txt { access_log off; log_not_found off; }
       	location ~ /\. { deny all; access_log off; log_not_found off; }  
        location ~ \.php {
        	proxy_pass      http://backend;
                include         /etc/nginx/proxy.conf;
                allow all;}     
        location @backend {
                proxy_pass      http://backend;
                include         /etc/nginx/proxy.conf;
                allow all;}    
}

server {
        root 		/var/www/public;
        server_name     public.com;
        location / { try_files $uri @backend; } 
        location = /favicon.ico { access_log off; log_not_found off; }
       	location = /robots.txt { access_log off; log_not_found off; }
       	location ~ /\. { deny all; access_log off; log_not_found off; }  
        location ~ \.php {
        	proxy_pass      http://backend;
                include         /etc/nginx/proxy.conf;
                allow all;}     
        location @backend {
                proxy_pass      http://backend;
                include         /etc/nginx/proxy.conf;
                allow all;}    
}

К машине привязано два IP: 1.1.1.1 и 2.2.2.2; Как сделать, чтобы второй server{} отзывался лишь по 2.2.2.2, все остальные запросы по 2.2.2.2 заруливались в 403, а первый server{} срабатывал по 1.1.1.1 с любым запросом?

Пытался вставлять в существующие listen 1.1.1.1:80; и listen 2.2.2.2:80;, создавал для 2.2.2.2 отдельный server{} без определения хоста с deny all - все равно запросы на 2.2.2.2 обрабатывались первым server{}

добавь соответствующие server_name 1.1.1.1; и server_name 2.2.2.2;

даже когда нет хоста, и при обращении к сайту по IP, то клиент обязан в Host заголовке передать IP адрес - хост, по которому осуществлялось обращение. вот этот хост и обрабатывай в server_name, в том числе даже если этот хост IP. а listen хоть *:80 ставь. ну или, если тебе принципиально, чтобы к 1.1.1.1 не могли обратиться указав Host: 2.2.2.2 и наоборот, то да, указывай и в listen тоже адреса.

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