nginx實現內網服務唯一端口外網映射


2.1         內網服務唯一端口外網映射

(一)       組網圖

(二)       簡要說明:

如標題所示,該功能可以實現內網環境下所有服務端口通過nginx的正向代理通過唯一端口映射至外網環境;且當本地服務設置特定域名后,外網可直接使用內網服務自定義的域名加映射端口進行訪問。

如下圖:

實現功能:外網訪問各個服務自定義的域名+統一的映射端口進行訪問。

可解決問題:

(一)   映射端口量實現無限量

有效解決內網路由端口數量不足的情況,由於常規的路由器對外可支持的映射端口為20個,當需求量超出時,只有手動更換對應的映射端口;但是有了nginx,我們只需要在配置文件中加入需要映射的服務信息即可實現對外映射的需要,且路由無需做任何改變。

(二)   安全系數增加

a)      由於內網映射的服務自定義了訪問域名,在不知道相應服務域名的前提了,公共環境是無法訪問對應的內網服務的。

b)      由於公網中對外僅提供了唯一的映射端口,即使訪問者知道你的公網IP及端口,由於nignx可以自定義設置默認訪問頁面,對於訪問者來說,內網的所有服務均處於相對安全狀態下。

 

(三)       nginx配置:

#user  nobody;

worker_processes  1;    #開啟niginx工作進程,一般幾個CUP核心寫幾個

error_log  /usr/local/nginx/logs/error.log;  #啟動日志存放路徑設置

events {

    worker_connections  1024;  #一個進程能同時處理1024個請求

}

http {

#開啟gzip壓縮

        gzip on;

#設置允許壓縮的頁面最小字節(從header頭的Content-Length中獲取) 建議大於1k

        gzip_min_length 1k;

#以16k為單位,按照原始數據大小以16k為單位的4倍申請內存

        gzip_buffers 4 16k;

#識別http協議的版本,早起瀏覽器可能不支持gzip自解壓,用戶會看到亂碼

gzip_http_version 1.1;

#等級1-9 最小的壓縮最快 但是消耗cpu

        gzip_comp_level 4;

#匹配壓縮類型

        gzip_types text/plain text/css test/javascript application/json application/javascript application/x-javascript application/xml;

 #設置需要壓縮的數據格式

        gzip_vary on;   #啟用應答頭"Vary: Accept-Encoding"

        include       mime.types;

        default_type  application/octet-stream;

        sendfile on;

        keepalive_timeout 65;

# 訪問日志配置

        access_log /usr/local/nginx/access.log;

upstream mytomcat123{

     server 192.168.1.119:15588;

}

upstream isatomcat{

     server 192.168.1.119:15587;

}

upstream isatomcat60{

     server 192.168.1.60:15587;

}

#設定虛擬主機配置1

     server {

       listen       88;

       server_name  mytomcat123;

#同一端口外網映射后,使用不同ip訪問不同的內網服務

        charset utf-8;

        access_log  logs/host.access.log;

        error_log logs/host.error.log;

        location / {

            proxy_pass http://mytomcat123;

            root   html;

            index  index.html index.htm;

        }

}

#設定虛擬主機配置2

       server {

        listen       88;

        server_name  isatomcat;

#同一端口外網映射后,使用不同ip訪問不同的內網服務

        charset utf-8;

        access_log  logs/host.access.log;

        error_log logs/host.error.log;

        location / {

            proxy_pass http://isatomcat;

            root   html;

            index  index.html index.htm;

       }

}

#設定虛擬主機配置3

       server {

        listen       88;

        server_name  isatomcat60;

#同一端口外網映射后,使用不同ip訪問不同的內網服務

        charset utf-8;

        access_log  logs/host.access.log;

        error_log logs/host.error.log;

        location / {

            proxy_pass http://isatomcat60;

            root   html;

            index  index.html index.htm;

       }

}

}

測試配置文件備份:

 

                                                                                                     

注意紅色標記,這里配置了3個內網服務,

192.168.1.60:15587(服務別名為:  tomcat60)

192.168.1.119:15587(服務別名為:tomcat)

192.168.1.119:15588(服務別名為:mytomcat123)

同時監聽的端口是88,我這里將其映射至外網,外網訪問端口為10388

 

(四)       本地配置域名解析便於外網訪問

目的:快速定位解析訪問域名

注意:由於目前公司內部使用的是免費的域名解析工具,會出現域名解析異常導致的訪問失敗的情況(老問題),在不影響工作的情況建議直接使用外網IP的方法來規避此類問題。

a)    Windows配置訪問驗證

訪問C:\Windows\System32\drivers\etc 下打開hosts文件 加入

relaxsystem027.gnway.cc isatomcat isatomcat60 mytomcat123

 

Windows下嘗試訪問:

如下圖所示

我們可以看到3台服務已經可以使用外網映射的公共端口通過自定義的域名進行訪問了。莫名的感覺到很強,有沒有。

注意:使用公網域名加映射端口訪問時,默認跳轉到的是nginx配置的第一個虛擬服務路徑;這里就實現了訪問安全策略。

 

b)    Linux配置訪問驗證

訪問編輯/etc/hosts

 

Linux下訪問

考慮到訪問客戶端應用場景應該都是使用windows上,這里不做相關驗證

此處略


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM