標籤:

如何使用Nginx轉發非80埠的非HTTP請求?

為了能說明我的需求,畫了上面的圖。

nginx所在伺服器有一個外網域名可以訪問,在北京辦公室開發可以直接訪問內網mysql,redis等服務,現在希望在家通過域名和nginx可以訪問到nginx後面的所有服務(黃線表示)(web應用里需要配置redis,mysql的ip地址,密碼才能啟動tomcat),請大家支招,謝謝。


用nginx轉發非HTTP請求可以使用我們團隊的姚偉斌(文景)同學開發的tcp_proxy模塊:yaoweibin/nginx_tcp_proxy_module · GitHub

妥妥的。


nginx 不能轉發非 http/smtp 協議,你這種情況應該考慮走 VPN。


Nginx是HTTP伺服器,不是路由器,轉發非HTTP的流量只能走路由器。


redis,memcached,mysql可以使用ngx_lua,參考openresty。


是時候update一下了!!!

官方nginx自1.9.0版本起開始支持tcp轉發,自帶輪詢、哈希及最少連接的調度演算法。

有需要的朋友請參考這個官方文檔 Module ngx_stream_core_module

親測好用,請叫我雷鋒……


如果你有nginx機器的root許可權,並且埠無限制。可以通過ssh或iptable命令實現。不過最簡單還是用socat命令。


nginx有個stream模塊,不知道是否能夠滿足你的需求


這是想把nginx當七層交換機用?


nginx 只能做http分發用吧。要是直接訪問後台服務,真的要用vpn


nginx使用tcp_proxy模塊是可以實現對tcp埠轉發的,前提是埠不能被佔用!


推薦閱讀:

基於 HTTP 連接下 token 安全問題?
如何讓html img標籤發送的http請求附加某個http header?
怎樣學習 HTTP 協議?
大家在工作中那些地方用到了http協議的細節?

TAG:Linux | Nginx | HTTP |