[問題] Nginx的map,好像只抓到default?關於同一個port分流

看板Linux作者 (metrics is everything@@)時間11月前 (2023/12/18 10:59), 編輯推噓3(306)
留言9則, 4人參與, 1年前最新討論串1/1
各位大大好, 我需要做一個:「同一port分流至ssh server與http server」的事, 找了一下資料,使用nginx加上map來試驗, 我的nginx設定檔如下: stream { upstream server_ssh { server my_host:22; } upstream server_http { server my_host:7006; } map $remote_port $pass_server { 22 server_ssh; default server_http; } server { listen 8888; proxy_pass $pass_server; } server { listen 8822; proxy_pass server_ssh; } server { listen 8806; proxy_pass server_http; } } 接下來我測了些CASE, CASE 1:ssh user@my_host -p 8822 這樣是成功的, CASE2:curl http://my_host:8806 這樣也是成功的, 以上看起來我的proxy_pass寫法是OK的,接著, CASE 3:ssh user@my_host -p 8888 這樣是失敗的,而且,我可以在httpd上看到訪問失敗記錄 CASE 4:curl http://my_host:8888 這樣是成功的, 看起來,map的判斷功能不見了,一律使用default? 還是其實我拿了一個錯的變數來判斷,所以永遠不會是22,只好map到default, 如果是這樣那請問,我該用什麼變數判斷呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.19.53 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1702868363.A.BE2.html

12/18 12:57, 11月前 , 1F
$remote_port 不會是 22 吧.
12/18 12:57, 1F

12/18 12:59, 11月前 , 2F
直覺會先試試 $uri, 有就 http, 沒有就 ssh
12/18 12:59, 2F

12/18 17:50, 11月前 , 3F

12/19 05:50, 11月前 , 4F
stream模組地下,無法使用$uri變數...:(
12/19 05:50, 4F

12/19 05:50, 11月前 , 5F
我來看看sslh,謝謝:)
12/19 05:50, 5F

12/19 05:51, 11月前 , 6F
錯字,改成:“模組底下”
12/19 05:51, 6F

01/16 19:15, 1年前 , 7F
你要由8888 port分流ash 跟https的話$remote_port都會是
01/16 19:15, 7F

01/16 19:15, 1年前 , 8F
8888,你要用$ssl_preread_protocol來判斷,參考https:/
01/16 19:15, 8F

01/16 19:15, 1年前 , 9F
/serverfault.com/a/1081363
01/16 19:15, 9F
文章代碼(AID): #1bVxMBlY (Linux)
文章代碼(AID): #1bVxMBlY (Linux)