当前位置: 当前位置:首页 > 综合 > nginx内网web服务访问端口正文

nginx内网web服务访问端口

作者:焦点 来源:时尚 浏览: 【大 中 小】 发布时间:2026-10-17 06:18:33 评论数:

nginx 默认监听 80 端口。服务访问这件事本身没什么好说的端口,但内网环境里,服务访问80 端口能不能用、端口要不要改、服务访问改完之后怎么访问,端口坑比想象中多。服务访问

上个月帮一个做仓储管理的端口朋友调他们的内部系统。服务器放在机房,服务访问不连外网,端口nginx 跑在一台 CentOS 7 上。服务访问装完之后本机 curl 127.0.0.1 能通,端口但同网段的服务访问其他机器访问 192.168.1.50 死活连不上。他第一反应是端口防火墙没关,systemctl stop firewalld 之后还是服务访问不行。我上去看了一眼,nginx.conf 里 server 块写的是 listen 127.0.0.1:80。这就意味着 nginx 只绑了回环地址,局域网里其他机器根本够不着。改成 listen 80 或者 listen 192.168.1.50:80 就好了。

这个细节很多人会忽略。因为默认的 nginx.conf 模板通常写的是 listen 80 default_server,但有些发行版或者某些一键安装脚本会改成 127.0.0.1。所以第一步永远是确认监听地址。ss -tlnp | grep nginx 或者 netstat -tlnp | grep nginx,看到 0.0.0.0:80 或者 :::80 才算对。看到 127.0.0.1:80 就得改配置。

端口本身的选择也有讲究。内网 web 服务用 80 最省事,浏览器直接输 IP 就行。但有些内网环境里 80 被占用了,比如装了 Zabbix agent 或者某些监控软件会抢。这时候换成 8080、8000、8888 都行。换端口之后访问要带端口号:http://192.168.1.50:8080。如果不想让用户记端口,可以在 nginx 里做 301 跳转,但前提是 80 端口得有个东西在监听。或者用 iptables 做端口转发,把 80 转到 8080。不过内网环境我一般建议直接换端口,少一层转发少一个故障点。

CentOS 7 之后的版本,firewalld 是默认开着的。只改 nginx 配置不够,还得放行端口。命令是 firewall-cmd --permanent --add-port=8080/tcp,然后 firewall-cmd --reload。注意 --permanent 参数,不加的话重启就没了。Ubuntu 上用 ufw 的话是 ufw allow 8080/tcp。还有一种情况是 SELinux。CentOS 默认 SELinux 是 enforcing 模式,nginx 监听非标准端口会被拦。报错信息一般是 permission denied,看 nginx error.log 能看到。解决办法是用 semanage 添加端口:semanage port -a -t http_port_t -p tcp 8080。或者临时 setenforce 0 测试,确认是 SELinux 的问题再永久处理。

内网访问还有一层是 DNS 或者 hosts。如果不想让同事记 IP,可以在内网 DNS 里加一条 A 记录,比如 erp.internal 指向 192.168.1.50。没有 DNS 服务器的话,就在每台客户机的 hosts 文件里加。Windows 的 hosts 在 C:\Windows\System32\drivers\etc\hosts,Linux 在 /etc/hosts。加一行 192.168.1.50 erp.internal 就行。这样访问 http://erp.internal:8080 比记 IP 方便。但 hosts 文件维护起来麻烦,机器多了还是搭个 dnsmasq 省事。

另外提一句,内网 web 服务如果只是给几个人用,nginx 的默认配置足够。但要是并发稍微高一点,比如几十个人同时刷页面,worker_connections 得调。默认 1024 在低配机器上可能不够。还有 keepalive_timeout,内网延迟低,可以设短一点,比如 15 秒,释放连接快一些。这些参数在 /etc/nginx/nginx.conf 的 events 和 http 块里改。

最后说一个实际遇到的怪事。有台服务器 nginx 监听 80,防火墙也放了,同网段能访问,但跨网段不行。查了半天发现是交换机上做了 ACL,只允许特定网段访问那台服务器的 80 端口。这种网络层的限制,在服务器上怎么查都查不出来。所以内网访问不通的时候,别只盯着 nginx 和防火墙,网络设备也得看一眼。