要让服务器能够从外网访问,需要根据你的网络环境和需求进行配置,以下是常见的几种方法:
一、基本前提条件
1、服务器已部署并运行服务
- 确保服务在服务器上正常运行(如 Web 服务、SSH、数据库等)
- 检查服务监听的端口和IP地址(通常应为0.0.0.0 或)
2、服务器防火墙配置
# Linux 使用 iptables 或 firewalld sudo ufw allow 80/tcp # Ubuntu sudo firewall-cmd --add-port=80/tcp --permanent # CentOS # Windows 在防火墙中添加入站规则
二、不同网络环境的访问方案
方案1:直接公网IP(企业服务器/云服务器)
适用场景:云服务器(AWS、阿里云、腾讯云等)或拥有固定公网IP的服务器
配置步骤:
1. 获取公网IP地址
2. 在安全组/防火墙中开放相应端口
3. 直接通过http://公网IP:端口 访问
方案2:家庭宽带/无公网IP(使用端口转发)
适用场景:家庭NAS、自建服务器
配置步骤:
1.登录路由器管理界面(通常是192.168.1.1 或192.168.0.1)
2.设置端口转发/虚拟服务器:
- 外部端口:外网访问时使用的端口(如 8080)
- 内部IP:服务器内网IP(如192.168.1.100)
- 内部端口:服务实际运行端口(如 80)
- 协议:TCP/UDP
3.获取当前公网IP:
curl ifconfig.me
# 或访问 whatismyip.com 4. 通过http://公网IP:外部端口 访问
方案3:使用内网穿透工具(无公网IP推荐)
推荐工具:
Ngrok:简单易用
ngrok http 80FRP:功能强大,可自建服务端
ZeroTier/Tailscale:组建虚拟局域网
花生壳/神卓互联:国内服务,有免费版
云服务器:直接使用公网IP
容器服务:K8s LoadBalancer 或 Ingress
Serverless:函数计算等无服务器架构
三、详细配置示例
示例1:Nginx Web 服务器外网访问
/etc/nginx/sites-available/default
server {
listen 80;
server_name _; # 或你的域名
location / {
proxy_pass http://localhost:3000; # 你的应用端口
}
}重启Nginx sudo systemctl restart nginx
修改SSH配置文件 sudo nano /etc/ssh/sshd_config 修改以下参数: Port 22 # 可以改为非默认端口增加安全性 PermitRootLogin yes # 是否允许root登录 PasswordAuthentication yes # 密码认证 重启SSH服务 sudo systemctl restart sshd
四、域名访问(可选但推荐)
1、购买域名(阿里云、腾讯云等)
2、域名解析:
- A记录:将域名指向服务器IP
- CNAME:使用CDN或别名
3、配置Web服务器:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
# ... 其他配置
}五、安全性建议
1、修改默认端口(特别是SSH、数据库)
2、使用强密码或密钥认证
3、定期更新系统和软件
4、配置SSL证书(Let's Encrypt免费证书):
# 使用Certbot sudo certbot --nginx -d yourdomain.com
5、使用防火墙限制访问源IP
6、避免使用root用户运行服务
六、问题排查
1、检查服务是否运行:
sudo systemctl status nginx netstat -tuln | grep :80
2、检查防火墙规则:
sudo ufw status
3、测试连通性:
telnet 服务器IP 端口 curl http://服务器IP:端口
4、查看日志:
sudo tail -f /var/log/nginx/error.log
选择哪种方案主要取决于:
网络环境(有无公网IP)
使用场景(临时测试/长期使用)
技术能力(是否愿意折腾)
预算(是否愿意付费)
对于个人用户,如果没有公网IP,推荐使用FRP 或Ngrok 这类内网穿透工具。
文章摘自:https://idc.huochengrm.cn/fwq/21046.html
评论
忻烨霖
回复服务器要实现外网访问,需配置公网IP地址,开放相应端口,并确保防火墙允许访问,同时可能需要设置路由器端口映射,配置域名解析,确保DNS解析正确,确保网络连接稳定,并定期更新安全设置。