Nginx配合Natapp使用,解决单隧道穿透内网访问多项目问题

起始

今天测试一个需求,需要同事远程访问我本地的两个项目,远程访问使用了natapp进行内网穿透,但是由于一个natapp只能绑定访问一个端口,所以没办法同时让他访问我的两个项目,无法测试,我又不想花钱再买一个隧道。
为了解决这个问题,也为了以后能更充分的使用natapp的内网穿透,我决定在自己的电脑上使用 nginx代理 来达到目的。

natapp 的使用

natapp 的使用方法网上有许多,可自行百度,这里提供官网教程:

https://natapp.cn/article/natapp_newbie

nginx 安装

nginx 的windows版本的安装网上也有,可自行百度,这里简单说下:

  1. 先去下载nginx安装包

    http://nginx.org/en/download.html
    下载稳定版本,以 nginx/Windows-1.16.0 为例,直接下载 nginx-1.16.0.zip
    在这里插入图片描述

  2. 下载后解压,解压后如下
    在这里插入图片描述

参考:【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;
        #}
	
		......
......

  1. 由于我的 natapp 的隧道端口配置的是 8082,所以这里监听的也是 8082 端口;

    listen 8082; # 监听端口

  2. 另外我们需要通过我们购买的 natapp 的二级域名访问我们的本地项目,而访问 nginx 也需要使用nginx服务的名称,所以这里将 nginx 的服务名称设置为我的 natapp 的二级域名。

    server_name https://xnz.mynatapp.cc; # nginx服务名称

  3. 通过访问地址中的项目名,由 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"

posted @ 2019-05-05 19:09  IT-小浣熊  阅读(824)  评论(0)    收藏  举报