Opened 8 years ago
Closed 8 years ago
#1121 closed defect (invalid)
Unexpected listen directive behaviour when 'listen PORT' and 'listen IP:PORT' are used in configuration simultaneously.
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | nginx-core | Version: | 1.6.x |
Keywords: | listen | Cc: | |
uname -a: | Linux HPSH034 3.10.0-327.28.3.el7.x86_64 #1 SMP Thu Aug 18 19:05:49 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux | ||
nginx -V: |
nginx version: nginx/1.6.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_spdy_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-pcre --with-pcre-jit --with-google_perftools_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E' |
Description
Way to reproduce:
server IP: 10.11.12.13
site1.com -> 10.11.12.13
site2.com -> 10.11.12.13
/etc/nginx/conf.d/virtualhosts.conf
server { listen 10.11.12.13:80; server_name site1.com; root /var/www/site1.com/; ... } server { listen 80; server_name site2.com; root /var/www/site2.com/; ... }
Expected behaviour:
site2.com is being listened at all interfaces:
$ curl http://site1.com Site1.com content
$ curl http://site2.com Site2.com content
Actual behaviour:
site2.com is ignored on 10.11.12.13
$ curl http://site1.com Site1.com content
$ curl http://site2.com Site1.com content
Note:
See TracTickets
for help on using tickets.
In the configuration above site2.com is expected to answer requests on all addresses but 10.11.12.13. The beahviour described is correct and it exactly equivalent to what happens when you have two separate listening sockets on 10.11.12.13:80 and on *:80.
If you want site2.com to answer requests on both *:80 and 10.11.12.13:80 listening sockets, you have to specify both sockets in the appropriate server{} block:
See How nginx processes a request for an introductory description on how nginx handles requests and how appropriate server{} block is selected.