Nginx省略IP时默认监听所有IPv4和IPv6地址,即0.0.0.0:端口和[::]:端口;root运行监听80端口,非特权用户监听8000端口;需显式指定127.0.0.1或[::1]才能限制为本地访问。
如果 listen 指令省略 IP 地址,Nginx 默认绑定到本机所有可用的 IPv4 和 IPv6 地址,即等效于 0.0.0.0:端口(IPv4)和 [::]:端口(IPv6),具体取决于系统协议支持情况。
当只写 listen 80; 或 listen 8000; 时:
*:80(即所有 IPv4 接口);若系统启用 IPv6 且未禁用,通常也会自动监听 [::]:80
*:8000(因普通用户无法绑定 1–1023 端口)127.0.0.1 或某个特定网卡,而是面向全部网络接口开放以下几种写法在语义上基本一致(均表示监听所有 IPv4 接口):
listen 80;listen *:80;listen 0.0.0.0:80;但注意:listen [::]:80; 仅覆盖 IPv6,需单独配置才能同时支持双栈;若只写 listen 80;,Nginx 通常会自动补全 IPv4 和 IPv6 监听(取决于编译选项与系统配置)。
省略 IP 地址是开放行为,不是安全策略:
listen 127.0.0.1:80; 或 listen [::1]:80;
listen 192.168.1.100:80;
可通过系统命令确认 Nginx 实际监听哪些地址:
ss -tlnp | grep nginx 或 netstat -tlnp | grep nginx
*:80 表示监听所有 IPv4 接口,:::80 表示监听所有 IPv6 接口127.0.0.1:80,说明配置中已明确限定,而非省略所致