[英]Nginx reverse proxy to multiple devices maping hostname
大家早上好,我有一個相當特殊的配置,我不能用 Nginx 運行。
Web 服務器專用於這項工作,並使用基於位置的描述性域進行調用,因此它必須使用 VPN 對特定商店中設備的特定 IP 進行反向代理。 .networking 部分已經實現,但不幸的是,設備僅在 HTTP 中響應,並且與在 HTTPS 中運行的軟件不兼容,使用此代理服務器,我們想繞過該問題並創建一種中間件,將請求從 HTTPS 轉換為HTTP,顯然使用了通配符證書。
我將通過一個例子來實踐:
store21c.example.com -> 10.0.21.253
store21s.example.com -> 10.0.21.251
實際上 nginx 應該讀取存儲之后和點之前的域部分,數字部分對應於設備 IP 的第 3 個條目,而如果它是最終為 ip 253 的設備或者如果它是最終 251,則為字母。
結果是創建 1 或 2 個響應所有變量的 NGNIX 配置(避免為每個案例創建一個),並為將來的存儲做好准備。 我記得服務器是內部的,無法從 inte.net 訪問,只需要反向代理到特定的 IP。
現在我們有了這個運行良好的配置,但只適用於一個設備:
server_name store21c.example.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://10.0.21.253;
}
提前感謝您的支持和建議,Max
我找到了一個解決方案測試和谷歌搜索,如果對這里有幫助,結果:
server_name ~^store(?<store_id>[0-9]+)(?<type_id>[a-z]+)\.example\.com$;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
if ($type_id = c) {
proxy_pass http://10.0.$store_id.253;
}
if ($type_id = s) {
proxy_pass http://10.0.$store_id.251;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.