利用云服务器公网IP实现内网服务暴露教程

是否后悔买了个内存太小,cpu太少的低配服务器?不要烦恼,这就带你变废为宝。

准备工作

  • 一台具有公网IP的云服务器
  • 一台联网的个人电脑

具体操作

云服务器端操作

1. 开放云服务器层面防火墙端口:443, 80

  • 在云服务器控制台中,确保已经在防火墙设置中开放了 443 和 80 端口。这通常可以在云服务提供商的控制台进行设置(如 AWS、阿里云、腾讯云等)。

2. 开放操作系统层面防火墙端口:443, 80

在操作系统层面使用 ufw 来配置防火墙,允许通过端口 80(HTTP)和端口 443(HTTPS):

sudo ufw allow 80/tcp  # 开放80端口 (HTTP)
sudo ufw allow 443/tcp # 开放443端口 (HTTPS)
sudo ufw status        # 检查防火墙状态,确认端口是否成功配置

注意:默认情况下,ufw 防火墙通常是关闭的。如果防火墙还没有启用,可以运行 sudo ufw enable 来启用它。

3. 验证是否能够访问云服务器

  • Ping 云服务器公网 IP(需在云服务器控制台允许 ICMP 协议):
ping 你的服务器公网ip
  • 如果不想配置 ICMP 协议,可以使用 curl 测试 HTTP 端口(80)是否开放:
curl http://你的公网服务器ip

4. 下载并配置 Nginx

安装 Nginx

  1. 更新软件包列表
sudo apt update
  1. 安装 Nginx
sudo apt install nginx
  1. 启动 Nginx 服务
sudo systemctl start nginx
  1. 设置 Nginx 开机自动启动
sudo systemctl enable nginx
  1. 检查 Nginx 服务状态
sudo systemctl status nginx

配置 Nginx

  1. 默认配置文件的位置:Nginx 的默认配置文件通常位于 /etc/nginx,你可以根据需要修改它。
  • 打开默认配置文件进行编辑:
sudo nano /etc/nginx/nginx.conf
http {
    # HTTP 配置块,用于重定向 HTTP 请求到 HTTPS
    server {
        listen 80;  # 监听 80 端口,HTTP 协议
        server_name ; 115.120.246.30 # 你的服务器公网 IP 地址或域名

        # HTTP 到 HTTPS 的 301 重定向
        return 301 https://$host$request_uri;
    }

    # HTTPS 配置块,用于处理 SSL 加密的请求
    server {
        listen 443 ssl;  # 监听 443 端口,HTTPS 协议
        server_name 115.120.246.30;  # 你的服务器公网 IP 地址或域名

        # SSL 配置
        ssl_certificate /etc/nginx/ssl/selfsigned.crt;  # SSL 证书文件路径
        ssl_certificate_key /etc/nginx/ssl/selfsigned.key;  # SSL 证书私钥文件路径

        
        # 配置反向代理
        location / {
           proxy_pass http://127.0.0.1:8100;#记住这个自定义端口,一会要用

           # 设置 HTTP 头,确保代理请求正确传递
           proxy_set_header Host $host;  # 保持原始请求头中的 Host 信息
           proxy_set_header X-Real-IP $remote_addr;  # 传递客户端的真实 IP
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

  1. 检查 Nginx 配置是否正确
sudo nginx -t
  1. 重新加载 Nginx 配置
sudo systemctl reload nginx
  1. 打开浏览器,输入云服务器的公网 IP 地址
 http://你的公网IP

如果一切配置正确,你会发现浏览器上方地址从http://你的公网IP变为https://你的公网IP.
并展示页面
502 Bad Gateway
nginx/1.18.0 (Ubuntu)

个人电脑端操作

1.设置个人电脑防火墙规则,允许某端口(eg.8080)的入站流量

打开防火墙设置,点击入站规则,点击新建规则

  • 规则类型:端口
  • 应用于:TCP
  • 特定端口:(eg.8080)
  • 连接符合指定条件时:允许连接
  • 何时应用此规则:域,专用,公用
  • 设置规则名称:(eg.个人电脑暴露服务端口8080)

2. 建立与云服务器的 SSH 反向隧道,处理来自 443 和 80 端口的流量

SSH 反向隧道是通过 SSH 协议将本地计算机的端口映射到远程服务器上,允许远程服务器通过该隧道访问本地计算机的服务。

你已经完成云服务器端的全部配置,希望将发往云服务器的请求交由你的个人电脑上运行的服务器处理

打开cmd命令行工具,使用以下命令来建立 SSH 反向隧道:

ssh -R 8100:localhost:8080 root@你的云服务器公网ip  #建立反向 SSH 隧道

解释:

  • ssh: 使用 SSH 协议连接到远程服务器。
  • -R 8100:localhost:8080: 这是反向隧道的关键部分,说明了:
    • -R:表示反向隧道。
    • 8100:localhost:8080:将访问云服务器8100端口的请求,通过ssh隧道转发到个人电脑8080端口,由对应服务处理(eg.某某外卖🤔 运行在8080端口)
  • root@你的云服务器公网ip: SSH 登录的目标是云服务器的公网 IP 地址,用户名为 root
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值