原文地址:http://www.javashuo.com/article/p-mhrcjebb-ha.htmljavascript
如標題所示,該功能能夠實現內網環境下全部服務端口經過nginx的正向代理經過惟一端口映射至外網環境;且當本地服務設置特定域名後,外網可直接使用內網服務自定義的域名加映射端口進行訪問。css
以下圖:html
實現功能:外網訪問各個服務自定義的域名+統一的映射端口進行訪問。java
可解決問題:nginx
(一) 映射端口量實現無限量json
有效解決內網路由端口數量不足的狀況,因爲常規的路由器對外可支持的映射端口爲20個,當需求量超出時,只有手動更換對應的映射端口;可是有了nginx,咱們只須要在配置文件中加入須要映射的服務信息便可實現對外映射的須要,且路由無需作任何改變。windows
(二) 安全係數增長瀏覽器
a) 因爲內網映射的服務自定義了訪問域名,在不知道相應服務域名的前提了,公共環境是沒法訪問對應的內網服務的。tomcat
b) 因爲公網中對外僅提供了惟一的映射端口,即便訪問者知道你的公網IP及端口,因爲nignx能夠自定義設置默認訪問頁面,對於訪問者來講,內網的全部服務均處於相對安全狀態下。安全
#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的方法來規避此類問題。
訪問C:\Windows\System32\drivers\etc 下打開hosts文件 加入
relaxsystem027.gnway.cc isatomcat isatomcat60 mytomcat123
Windows下嘗試訪問:
以下圖所示
咱們能夠看到3臺服務已經可使用外網映射的公共端口經過自定義的域名進行訪問了。莫名的感受到很強,有沒有。
注意:使用公網域名加映射端口訪問時,默認跳轉到的是nginx配置的第一個虛擬服務路徑;這裏就實現了訪問安全策略。
訪問編輯/etc/hosts
Linux下訪問
考慮到訪問客戶端應用場景應該都是使用windows上,這裏不作相關驗證
此處略