如標題所示,該功能可以實現內網環境下所有服務埠通過nginx的正向**通過唯一埠對映至外網環境;且當本地服務設定特定網域名稱後,外網可直接使用內網服務自定義的網域名稱加對映埠進行訪問。
如下圖:
實現功能:外網訪問各個服務自定義的網域名稱+統一的對映埠進行訪問。
可解決問題:
(一) 對映埠量實現無限量
有效解決內網路由埠數量不足的情況,由於常規的路由器對外可支援的對映埠為20個,當需求量超出時,只有手動更換對應的對映埠;但是有了nginx,我們只需要在配置檔案中加入需要對映的服務資訊即可實現對外對映的需要,且路由無需做任何改變。
(二) 安全係數增加
a) 由於內網對映的服務自定義了訪問網域名稱,在不知道相應服務網域名稱的前提了,公共環境是無法訪問對應的內網服務的。
b) 由於公網中對外僅提供了唯一的對映埠,即使訪問者知道你的公網ip及埠,由於nignx可以自定義設定預設訪問頁面,對於訪問者來說,內網的所有服務均處於相對安全狀態下。
#user nobody;
worker_processes 1; #開啟niginx工作程序,一般幾個cup核心寫幾個
error_log /usr/local/nginx/logs/error.log; #啟動日誌存放路徑設定
events {
worker_connections 1024; #乙個程序能同時處理1024個請求
#開啟gzip壓縮
gzip on;
#設定允許壓縮的頁面最小位元組(從header頭的content-length中獲取) 建議大於1k
gzip_min_length 1k;
#以16k為單位,按照原始資料大小以16k為單位的4倍申請記憶體
gzip_buffers 4 16k;
#識別http協議的版本,早起瀏覽器可能不支援gzip自解壓,使用者會看到亂碼
#等級1-9 最小的壓縮最快 但是消耗cpu
gzip_comp_level 4;
#匹配壓縮型別
#設定需要壓縮的資料格式
gzip_vary on; #啟用應答頭"vary: accept-encoding"
include mime.types;
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訪問不同的內網服務
#設定虛擬主機配置2
server {
listen 88;
server_name isatomcat;
#同一埠外網對映後,使用不同ip訪問不同的內網服務
#設定虛擬主機配置3
server {
listen 88;
server_name isatomcat60;
#同一埠外網對映後,使用不同ip訪問不同的內網服務
測試配置檔案備份:
注意紅色標記,這裡配置了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配置訪問驗證
linux下訪問
考慮到訪問客戶端應用場景應該都是使用windows上,這裡不做相關驗證
此處略
Nginx配置 同一埠下部署不同專案
1.功能描述 2.實現 3.問題解決 4.最終效果 react專案 1 package.json中增加配置homepage欄位,以網域名稱www.abc.cn為例 2 broserrouter中配置basename屬性 其他引入項省略 引入路由元件 import from react router ...
nginx 乙個埠多網域名稱服務方案
網域名稱 ip位址 host.com 192.168.0.10 server1.com 192.168.0.11 server2.com 192.168.0.12 訪問時指向到三颱伺服器上,即三個網域名稱分別提供三個ip位址。我們在host.com伺服器上部署一套nginx程式,利用nginx自動匹...
Python 通過監聽埠實現唯一指令碼執行方式
更多程式設計教程請到 菜鳥教程 高州陽光論壇 人人影視 我就廢話不多說了,大家還是直接看 吧 try s socket.socket s.bind 127.0.0.1 port except log.info already has an instance,so exit.exit 0 補充知識 p...