Nginx配合Natapp使用,解决单隧道穿透内网访问多项目问题
起始
今天测试一个需求,需要同事远程访问我本地的两个项目,远程访问使用了natapp进行内网穿透,但是由于一个natapp只能绑定访问一个端口,所以没办法同时让他访问我的两个项目,无法测试,我又不想花钱再买一个隧道。
为了解决这个问题,也为了以后能更充分的使用natapp的内网穿透,我决定在自己的电脑上使用 nginx代理 来达到目的。
natapp 的使用
natapp 的使用方法网上有许多,可自行百度,这里提供官网教程:
nginx 安装
nginx 的windows版本的安装网上也有,可自行百度,这里简单说下:
- 先去下载nginx安装包
http://nginx.org/en/download.html
下载稳定版本,以 nginx/Windows-1.16.0 为例,直接下载 nginx-1.16.0.zip

- 下载后解压,解压后如下

参考:【windows下nginx的安装及使用】https://www.cnblogs.com/jiangwangxiang/p/8481661.html
配置 nginx.conf
在nginx的安装目录下的conf文件夹中有nginx.conf,我们需要配置该文件,使nginx代理我们的服务地址。
配置如下:
......
server {
listen 8082; # 监听端口
server_name https://xnz.mynatapp.cc; # nginx服务名称
#charset koi8-r;
#access_log logs/host.access.log main;
#location / {
# root html;
# index index.html index.htm;
#}
# 根据项目名区分代理的地址与端口
location /gdjmt.wx.xcx {
proxy_pass http://127.0.0.1:8083;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
}
# 根据项目名区分代理的地址与端口
location /gdjmt.wx.manage {
proxy_pass http://127.0.0.1:8084;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root html;
#}
......
......
-
由于我的 natapp 的隧道端口配置的是 8082,所以这里监听的也是 8082 端口;
listen 8082; # 监听端口
-
另外我们需要通过我们购买的 natapp 的二级域名访问我们的本地项目,而访问 nginx 也需要使用nginx服务的名称,所以这里将 nginx 的服务名称设置为我的 natapp 的二级域名。
server_name https://xnz.mynatapp.cc; # nginx服务名称
-
通过访问地址中的项目名,由 nginx 进行代理转发到对应的本地的项目地址,从而达到使用一个 natapp隧道 穿透本地内网访问多个项目的目的。
# 根据项目名区分代理的地址与端口
location /gdjmt.wx.xcx {
proxy_pass http://127.0.0.1:8083;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
}
# 根据项目名区分代理的地址与端口
location /gdjmt.wx.manage {
proxy_pass http://127.0.0.1:8084;
}
关闭 windows 上的 nginx
在CMD命令行窗口输入以下命令可关闭 windows 上的 nginx 进程
taskkill /f /t /im nginx.exe
参考:【(亲测)使用cmd结束进程的3种方法】https://blog.csdn.net/peng86788/article/details/80595487
可使用以下命令查看 windows 上的 nginx 进程
tasklist /fi "imagename eq nginx.exe"

浙公网安备 33010602011771号