簡體   English   中英

Nginx 反向代理到多個設備映射主機名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM