一、前言
什么是内网穿透?
内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。简而言之,就是公网可以直接访问我们本地电脑上的服务。
为什么需要内网穿透?
很多时候,我们需要公网可以直接访问本地电脑上的服务。对于开发人员来说,最常见的一种情况就是微信开发。微信的开发模式配置、登录授权回调、支付通知等功能都需要有公网可以直接访问的地址。对于初次对接的开发人员来说,需要大量的调试工作,如果通过上传代码的方式进行开发,不但浪费时间还不方便调试。
二、实现
实现内网穿透的方法有很多,今天介绍使用 Nginx proxy_pass 配合 SSH 隧道实现内网穿透。请先准备好一台服务器,并安装 Nginx。
服务器上进行如下操作
在 Nginx 的配置文件中添加如下配置,并重启服务:
server {
listen 80;
server_name xwenw.com; // 改为你的域名即可
location / {
proxy_pass http://127.0.0.1:8080; // 开放一个本地端口,用来转发上面定义的 80 端口的内容
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Cookie $http_cookie;
}
}
本地电脑进行如下操作
打开命令行并执行如下命令,回车后会提示输入服务器 root 账号的密码:
$ ssh -CNg -R 8080:127.0.0.1:8080 -o TCPKeepAlive=yes -o ServerAliveInterval=10 -o ServerAliveCountMax=2 -o ExitOnForwardFailure=yes root@xwenw.com
】启动本地的 Web 服务,端口为 8080。在公网通过域名 http://xwenw.com/wechat/service
即可访问本地的 http://127.0.0.1:8080/wechat/service
服务。然后就可以愉快的在本地进行微信的开发调试了。】
说明:8080:127.0.0.1:8080
中第一个 8080 是 proxy_pass 的端口,第二个 8080 是本地服务的端口,根据实际情况更改。
提示端口被占用
如果本地电脑断开后连不上,提示端口已占用,在服务器上运行如下命令:
$ lsof -i:8080
找到占用的进程,执行如下命令,kill 掉对应的进程,然后重新连接即可:
$ kill -9 进程ID
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)