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"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章