LINUX.ORG.RU
ФорумAdmin

# NGINX+APACHE открывает отключенные сайты! Дырявый NGINX или APACHE? или...

 ,


0

1

Выручайте.! Спасите.

Как запретить Nginx отдавать отключенные сайты.

Nginx+Apache

есть сайты на 1 IP

Работает все нормально. но если к примеру в Apache выключить a2dissite какой-то из сайтов и с браузера зайти откроется NGINX Редиректнит на Другой Virtual Host . потом после включение сайта обратно a2ensite то заходя уже будет открываться по прежнему другой сайт. потому что Осталось в Кеше.

КАК этому NGINX Запретить отдавать другие сайты если отключен.

КОНФИГИ NGINX

 # HTTP or WWW to HTTPS
server {
        server_name sites.com www.sites.com;
        listen 80;
		return 301 https://sites.com$request_uri;

       }
	   
# HTTPS, ALPN, HTTP/2
server {
    listen      55.55.55.55:443 ssl http2;
	server_name sites.com www.sites.com;
		
	ssl         on;
    ssl_certificate     /etc/ssl/certs/sites.crt;
    ssl_certificate_key /etc/ssl/private/sites.key;
	ssl_dhparam         /etc/ssl/certs/sites.pem; 
	
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 12h;

	
    location / {

		
		proxy_pass      https://127.0.0.2:8443;
		proxy_read_timeout 600;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
		#proxy_redirect off;
		proxy_set_header X-Forwarded-Proto $scheme;
        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mpeg|mpg|wmv|exe|iso|dmg|swf)$ {
            root           /var/www/sites.com;
            access_log     /var/www/sites.com/logs/access.nginx.log combined;
            expires        max;
            try_files      $uri @fallback; 
			
			}
    }
	
 

SITE2

Конфиг точно такой только локальный proxy айпи другой

proxy_pass      https://127.0.0.3:8443;

SITE3 есть еше 1 сайт без SSL

server {
        server_name site3.net www.site3.net;
        listen 80;
        return 301 http://site3.net$request_uri;

       }

# HTTP
server {
    listen      55.55.55.55:80;
	server_name site3.net www.site3.net;
location / {
       proxy_pass      http://127.0.0.5:8080;

Парни как с этим бороться? даже если удать Виртуал Хост в Nginx и Обраться на сайт по этому же домену и на этот айпи, он откроет другой сайт, и не напишет типа 404 или как бы свою страницу сделать типа Site OFFLine.

Всем Спасибо!

Ах!! да есть сайты на 443 которые вообше на виделеном айпи. их также открывает! NGINX тупо Делает Ридирект на другой сайт.! Х.. Понять что за РиДиректы и в честь чего.

Его Спрашуют vasya а он увидил что вася отсуствут тутже отдает дело пете.! что за Дела.!


Ответ на: комментарий от zgen

Умный ? так проясни, раз можешь.

если ты о этом то он есть.

только работает при обращении по айпи. если в браузере написать айпи то сработает. а если отключить 1 из сайтов. и на него же обратиться тыкнут F5 обязательно сработает.

если вы не в состоянии или что больше не знаете. лучше не пишите.

server {
     listen 80 default_server;
	 listen 443 default_server;
     server_name _;
     return 404;
}

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

nginx ничего не «отключает», нет у него такой функции.
Поэтому будь добр, поясни что ты под «отключил» имеешь в виду.

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

Я понял что Nginx ничего не отключает. просто хотелось получить ответ как все таки правильно настроить

на 1 IP: 2 адреса https и 1 на http

гуглил много конфигов вроде все понятно! но вот работает все так как бы хотелось бы.

Если вам не сложно поделиться опытом подскажите правила и поведение NGINX. и где я допускаю ошибку.

Есть 1 внешний IP 1.1.1.1

Сайт 1 HTTPS

 # HTTP or WWW to HTTPS
server {
        server_name sites1.com www.sites1.com;
        listen 80;
		return 301 https://sites1.com$request_uri;
       }
	   
# HTTPS, ALPN, HTTP/2
server {
    listen      1.1.1.1:443 ssl http2;
    server_name sites1.com www.sites1.com;
       
    location / {
        proxy_pass      http://127.0.0.2:8080;

Сайт 2 HTTPS

 # HTTP or WWW to HTTPS
server {
        server_name sites2.com www.sites2.com;
        listen 80;
		return 301 https://sites2.com$request_uri;
       }
	   
# HTTPS, ALPN, HTTP/2
server {
    listen      1.1.1.1:443 ssl http2;
    server_name sites2.com www.sites2.com;
       
    location / {
        proxy_pass      http://127.0.0.3:8080;

Сайт 3 просто HTTP (не HTTPS)

 # HTTP or WWW to HTTPS
server {
        server_name sites3.com www.sites3.com;
        listen 80;
		return 301 https://sites3.com$request_uri;
       }
	   
# HTTPS, ALPN, HTTP/2
server {
    listen      1.1.1.1:443 ssl http2;
    server_name sites3.com www.sites3.com;
       
    location / {
        proxy_pass      http://127.0.0.4:8080;

Удивительная картина при запросе с браузера http://www.sites1.com открываться сайт default который прописан в apache

<VirtualHost *:8080>
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html
</VirtualHost>
каким образом Nginx до него достает не могу разобраться.

> Картина номер 2 а при запросе http://www.sites2.com как и положено открывается сайт 2 все как и должно быть.

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

site1
site2
site3

тоесть при запросе к сайту 1 от не делает ридирект а отдает сразу сайт который без https site3

а если запросить сайт 2 то отдает сайт 2 ) прошу помочь разобраться.

ну и вот картинка еше , для Теста прописал этому первому сайту который отрывает дефолтный apache конфиг который висит на 80 порту, прописал уже домен прямо в Listen

server {
        server_name sites1.com www.sites1.com;
        listen sites1.com:80;
		return 301 https://sites1.com$request_uri;
       }

тут же все стало на свои места.!

прокоментируйте мои ошибки и поведение NGINX!

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

В случае https на одном ip и «хотелкой sni»:

1. «Отключать» сайты лучше не удалением куска конфига -а выставлением return или redirect. В этом случае отработает sni для прописанного сертификата в server.

2. Для проверки соответствия набираемого хоста в браузере можно делать в секции server:

if ($host != $server_name) { #return 404 «this is an invalid request»; return 444; }

А описанное поведение где-то было документировано)

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