LINUX.ORG.RU
ФорумAdmin

nginx сервер по умолчанию


0

3

Добрый вечер. Поясните дураку, пожалуйста. Доселе думал, что великой разницы между

listen 80
и
listen 1.1.1.1:80
нету, в случае использования 1 ip адреса.

НО. Имея такую конфигурацию

server {
    listen	 1.1.1.1:80 default;
    server_name  _;
    location / {
       proxy_pass  http://1.1.1.1:8080;
   }
}

server {
    listen 107.181.174.153:80;
    server_name servername.com www.servername.com;

    location / {
        proxy_pass	http://1.1.1.1:8080;
        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|$
            root           /home/public_html;
            expires        max;
            try_files	   $uri @fallback;
        }
    }


   location @fallback {        
      proxy_pass	     http://1.1.1.1:8080;
   }

}

Работает как и ожидалось. То есть, если выключить апач, то при запросе картинок мне все равно будет все отдаваться, потому что это делает nginx. Но если во втором server{} заменить listen 107.181.174.153:80; на listen 80; , то работает дефолтный server{} и я ловлю 502 gateway timeout.

Объясните на пальцах, как так? То есть nginx отработает сервер с совпавшим ip:порт, даже если есть совпадения по порт:server_name?


Если в двух словах - когда вы указываете ip адрес, то сокет начинает слушать url:port, когда адрес не указывается, то сокет начинает слушать *:port. Подробнее в POSIX.

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