nginx 仅限本机访问需显式监听回环地址:ipv4 用 listen 127.0.0.1:端口,ipv6 用 listen [::1]:端口,双栈需分两行写;配置后须重载并用 ss -tlnp 验证监听地址为 127.0.0.1:端口 或 ::1:端口,并建议添加 server_name 127.0.0.1 localhost 提升安全性。

直接在 server 块中用 listen 127.0.0.1:端口 或 listen [::1]:端口,就能让 Nginx 只响应来自本机的请求,不对外暴露服务。
明确写死回环地址
避免使用模糊写法(如 listen 80 或 listen *:80),它们默认监听所有地址,包括公网网卡。必须显式指定:
-
listen 127.0.0.1:80;—— 仅 IPv4 回环,端口 80 -
listen [::1]:80;—— 仅 IPv6 回环,注意方括号不能省 -
listen 127.0.0.1:8080 ssl http2;—— 可叠加其他常用参数
支持双栈时的写法
如果希望同时支持 IPv4 和 IPv6 回环,需分别写两行(Nginx 不支持单条指令混写):
listen 127.0.0.1:443 ssl;listen [::1]:443 ssl;
这样两个协议都只绑定本地,且互不干扰。不要写成 listen [::1]:443 ssl; listen 127.0.0.1:443 ssl; 以外的形式,否则可能被覆盖或忽略。
验证是否生效
改完配置后必须重载或重启 Nginx,并立即检查实际监听状态:
- 执行
sudo nginx -t && sudo nginx -s reload确保语法正确并生效 - 运行
ss -tlnp | grep :80(把 80 换成你实际端口) - 输出中 Local Address:Port 列应为
127.0.0.1:80或::1:80,而不是*:80或0.0.0.0:80
配合 server_name 提升安全性
仅靠 listen 绑定回环还不够严谨,建议加上 server_name 127.0.0.1 localhost;:
- 防止其他未匹配的
server块意外接管该监听端口 - 当有多个
server块监听同一回环端口时,靠server_name区分路由 - 尤其在调试或反向代理后端场景下,能避免请求误入非预期配置块











