云服务器公网IP和私网IP傻傻分不清?端口配置踩坑实录,手把手教你一次搞定

引言:从一个让人抓狂的“无法访问”开始

💡 推荐阅读:别再租第三方网盘了!手把手教你用 Docker 自建一套高可用私有云盘,彻底掌控数据主权

相信不少刚开始折腾云服务器的朋友,都遇到过这种场景:明明在云控制台看到服务器状态是“运行中”,安全组规则也加了,程序也启动了,但就是死活访问不了。你开始怀疑是不是防火墙没关,又或者是Nginx配置写错了?

折腾半天,最后发现是IP地址用错了——把内网IP当公网IP去访问,或者端口监听在了错误的网卡上。这种问题对老手来说可能不值一提,但对刚入门的朋友来说,确实容易绕晕。

今天这篇文章,笔者就借着实操经验,把公网IP、内网IP的区别以及端口配置的正确姿势掰开揉碎讲清楚。全程干货,建议收藏。

环境准备与前置要求

🔥 【限时特惠福利】高性价比独享云服务器限时 1 折起

搭建网站或部署容器推荐选择高稳定性独享云服务器。限时特惠通道开放中,点击即可领取专属满减代金券与特惠折扣:

👉 立刻领取云服务器限时优惠券

💡 延伸阅读:Nginx 频繁 502 Bad Gateway?别急着重启,这份排查与修复实战指南请收好

在开始动手之前,先确认你手头有这些东西:

  • 一台云服务器(无论是阿里云、腾讯云还是其他厂商,原理通用)。
  • 已经拿到服务器的公网IP内网IP(在云控制台实例详情页都能看到)。
  • 能够通过SSH登录服务器(Windows用Xshell或者直接CMD,Mac/Linux直接用终端)。

准备好之后,咱们先搞清楚概念,再动手实操。

第一步:彻底搞懂公网IP与内网IP的核心区别

💡 深度技术指南:云服务器到期不用慌:一套无缝迁移方案,把网站搬家成本降到最低

很多朋友容易陷入一个误区,觉得IP就是IP,哪有什么内外之分。其实不然。

1. 什么是公网IP?

公网IP(Public IP)是你在互联网上的“门牌号”。全世界任何一台能上网的设备,都可以通过这个IP直接找到你的服务器。比如你通过ssh root@你的公网IP登录服务器,用的就是公网IP。

2. 什么是内网IP?

内网IP(Private IP)是云厂商在私有网络(VPC)内部分配的地址。它只在云厂商的内部网络里生效,公网是访问不到这个IP的。比如你买了一台服务器,它的内网IP可能是172.16.0.3或者10.0.0.12,这类IP段属于保留私网段。

3. 核心区别速览表

对比项 公网IP 内网IP
访问范围 全球互联网可达 仅限云厂商VPC内部
主要用途 对外提供服务(网站、SSH等) 内网互联(数据库集群、负载均衡后端)
是否收费 通常按带宽或流量计费 一般免费(包含在实例费用中)
能否直接访问外网 可以 不可以(需通过NAT网关)

划重点:对外提供服务,一律用公网IP;内网机器之间互访,优先用内网IP(速度快、延迟低、不占公网带宽)。

第二步:实操演练——如何正确配置端口监听

概念懂了,接下来上真家伙。咱们以最常见的Nginx部署网站MySQL数据库内网访问为例,演示端口配置的正确姿势。

场景一:部署Nginx,让公网能访问80端口

1. 安装Nginx

# 以CentOS为例
yum install -y nginx
systemctl start nginx
systemctl enable nginx

2. 检查监听地址

这一步非常关键。很多朋友配置完发现公网访问不了,原因就是Nginx默认监听在了IPv6或者内网网卡上。执行以下命令查看:

netstat -tlnp | grep nginx
# 或者
ss -tlnp | grep nginx

正确的输出应该是这样:

tcp   LISTEN  0  128  *:80  *:*  users:(("nginx",pid=1234,fd=6))

注意看*:80,这表示Nginx监听在所有网卡的80端口,包括公网网卡。如果你看到的是127.0.0.1:80,那说明它只监听在本地回环地址上,公网自然访问不了。此时需要修改Nginx配置文件(/etc/nginx/nginx.conf),把listen改成listen 80;即可。

3. 配置云安全组

这一步千万别忘了。在云控制台找到安全组,添加入站规则:

协议: TCP
端口: 80/80
授权对象: 0.0.0.0/0  # 表示允许所有IP访问

如果你只想让特定IP访问,可以填你的家庭宽带IP或者公司出口IP。

4. 验证公网访问

curl http://你的公网IP

如果返回Nginx的欢迎页面,恭喜你,配置成功!

场景二:MySQL只允许内网访问,禁止公网暴露

出于安全考虑,数据库这类敏感服务不应该暴露到公网。正确做法是让MySQL只监听内网IP。

1. 修改MySQL配置文件

vim /etc/my.cnf
# 在[mysqld]段下添加或修改:
bind-address = 你的内网IP

2. 重启MySQL

systemctl restart mysqld

3. 验证监听状态

netstat -tlnp | grep 3306

此时你会看到监听地址变成了内网IP,公网IP的3306端口已经无法访问了。

4. 配置安全组(只放行内网)

在安全组里,入站规则这样写:

协议: TCP
端口: 3306/3306
授权对象: 你的另一台云服务器的内网IP

这样,只有你指定的那台内网机器能连上数据库,安全性直接拉满。

第三步:避坑清单——这些坑我替你踩过了

实操过程中,有几个高频坑点,笔者总结如下,请务必留意:

  • 坑1:安全组规则没生效。修改安全组后,记得检查规则优先级,有些厂商默认拒绝所有入站,需要单独放行。
  • 坑2:服务器内部防火墙没关。除了云安全组,服务器本身的iptables或者firewalld也可能拦截端口。执行systemctl stop firewalld或者放行端口。
  • 坑3:Nginx启动失败。80端口被占用时,Nginx会报错。用lsof -i:80查看占用进程,或者改用8080等端口。
  • 坑4:公网IP换了。如果你的服务器没有绑定弹性公网IP,重启后公网IP可能会变。建议在控制台把公网IP转为弹性公网IP(EIP),避免IP变动导致服务不可用。
  • 坑5:误把内网IP当公网IP用。这个最基础也最容易犯。记住,在浏览器、SSH客户端里访问的,永远是公网IP

总结与建议

公网IP与内网IP的区别,本质上就是“对外服务”与“内部互联”的分工。理解了这个底层逻辑,再配合安全组规则和监听地址的配置,绝大多数端口问题都能迎刃而解。

最后给各位站长一个中肯的建议:云服务器的选择很重要,靠谱的厂商能让你少踩很多坑。无论你是做个人博客还是企业官网,建议优先选择大厂或者口碑较好的服务商,带宽充足、安全组规则清晰、售后响应快,这些在关键时刻都是救命稻草。别贪便宜买那些小众厂商的“超售”机器,性能和稳定性都堪忧。

希望这篇文章能帮你彻底告别IP和端口配置的烦恼。如果你还有其他疑问,欢迎在评论区留言交流,笔者看到会第一时间回复。

相关技术专题与延伸阅读

📦 【资源免费领】本文全套实操配置文件与避坑手册下载

本文涉及的全套 Docker Compose 配置文件、服务器运维避坑清单及 AI 提效指令库已完整打包,可免费极速转存:

👉 点击前往夸克网盘免费极速转存(手机端领 1TB 空间)

💡 提示:推荐使用手机【夸克网盘 App】打开保存,新用户首月免费赠送 1TB 超大空间与免流量极速下载特权。

滚动至顶部