Nginx實(shí)現(xiàn)UDP四層轉(zhuǎn)發(fā)的過(guò)程
一、背景
有2臺(tái)云服務(wù)器,一臺(tái)國(guó)內(nèi)的、一臺(tái)國(guó)外的,我本地網(wǎng)絡(luò)直連國(guó)外的IP上VPN速率很慢。但是由于云服務(wù)器廠商有線路優(yōu)化,國(guó)內(nèi)的服務(wù)器到國(guó)外的還挺快的,并且我本地到國(guó)內(nèi)服務(wù)器速率是OK的。那么想把這個(gè)UDP端口做下轉(zhuǎn)發(fā),這樣能加速我的上網(wǎng)速率。
說(shuō)干就干。這個(gè)第一個(gè)想到很簡(jiǎn)單的Haproxy做4層代理,配置也很快,監(jiān)聽(tīng)端口配置、轉(zhuǎn)發(fā)目標(biāo)端口、開(kāi)放安全組即可。 但是我忽略了一個(gè)問(wèn)題,找了半天發(fā)現(xiàn)Haproxy不能代理UDP流量。
別的工具又不想嘗試一遍了,所以索性選擇了常見(jiàn)的Nginx進(jìn)行4層代理,支持TCP、也支持UDP。

二、Nginx配置4層代理
1、首先通過(guò)yum安裝的nginx,默認(rèn)不存在--with-stream的模塊,需要執(zhí)行安裝命令
yum install nginx-mod-stream -y
nginx -V 輸出的是2(錯(cuò)誤輸出), 如果沒(méi)有將2>&1的話,無(wú)法直接grep查找關(guān)鍵詞。所以將錯(cuò)誤輸出導(dǎo)到標(biāo)準(zhǔn)輸出,才能進(jìn)行正常的grep. 這個(gè)需要注意下。
nginx -V 2>&1 | grep -w -- '--with-stream'
安裝完畢之后查看nginx的模塊列表,是否存在--with-stream:

2、修改nginx.conf配置文件如下
http {
# ... HTTP 服務(wù)配置部分
}
stream {
server {
listen 500 udp;
proxy_pass vpn_500;
}
upstream vpn_500 {
server $ip:500;
}
server {
listen 4500 udp;
proxy_pass vpn_4500;
}
upstream vpn_4500 {
server $ip:4500;
}
}3、nginx -t檢查一下nginx.conf是否存在語(yǔ)法錯(cuò)誤。 不存在錯(cuò)誤,則nginx -s reload或者nginx啟動(dòng)即可

4、檢查代理的UDP端口500和4500是否在監(jiān)聽(tīng)
查看監(jiān)聽(tīng)端口,500和4500正在UDP進(jìn)行監(jiān)聽(tīng),同時(shí)本地的VPN工具更換下IP即可測(cè)試正常連接。同時(shí)上網(wǎng)體驗(yàn)明顯更好。
ss -lnup | grep 500

三、總結(jié)
Haproxy只支持TCP的4層轉(zhuǎn)發(fā)以及7層HTTP的轉(zhuǎn)發(fā),但是不支持UDP流量轉(zhuǎn)發(fā)。 Nginx支持HTTP、TCP4層、UDP4層。同時(shí)Nginx配置我們相對(duì)熟悉,如果Haproxy搞不定的事情,我們可以借助Nginx實(shí)現(xiàn)也是沒(méi)問(wèn)題的。
到此這篇關(guān)于Nginx實(shí)現(xiàn)UDP四層轉(zhuǎn)發(fā)的文章就介紹到這了,更多相關(guān)Nginx UDP四層轉(zhuǎn)發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx服務(wù)器基礎(chǔ)的安全配置與一些安全使用提示
這篇文章主要介紹了Nginx服務(wù)器基礎(chǔ)的安全配置與一些安全使用提示,文中舉了一些典型的Nginx與PHP的環(huán)境用例,需要的朋友可以參考下2016-01-01
Nginx+FastDFS搭建圖片服務(wù)器的方法實(shí)現(xiàn)
這篇文章主要介紹了Nginx+FastDFS搭建圖片服務(wù)器的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
在Ubuntu系統(tǒng)上安裝Nginx服務(wù)器的簡(jiǎn)單方法
這篇文章主要介紹了在Ubuntu系統(tǒng)上安裝Nginx服務(wù)器的簡(jiǎn)單方法,包括打開(kāi)和關(guān)閉Nginx的指令,需要的朋友可以參考下2015-08-08
Nginx進(jìn)行域名重寫(xiě)和泛域名解析配置的方法
這篇文章主要介紹了Nginx進(jìn)行域名重寫(xiě)和泛域名解析配置的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
nginx反向代理失效前端無(wú)法獲取后端的數(shù)據(jù)解決辦法
Nginx服務(wù)器的反向代理服務(wù)是其最常用的重要功能,由反向代理服務(wù)也可以衍生出很多與此相關(guān)的Nginx服務(wù)器重要功能,下面這篇文章主要給大家介紹了關(guān)于nginx反向代理失效前端無(wú)法獲取后端的數(shù)據(jù)解決的相關(guān)資料,需要的朋友可以參考下2023-12-12
Windows nginx安裝教程及簡(jiǎn)單實(shí)踐
這篇文章主要介紹了Windows nginx安裝教程及簡(jiǎn)單實(shí)踐的相關(guān)資料,需要的朋友可以參考下2016-10-10
Nginx訪問(wèn)無(wú)權(quán)限的問(wèn)題解決
Nginx啟動(dòng)后訪問(wèn)時(shí)服務(wù)器返回權(quán)限拒絕錯(cuò)誤,原因是Nginx進(jìn)程沒(méi)有訪問(wèn)目標(biāo)文件的權(quán)限,解決方法包括檢查和修復(fù)文件及目錄權(quán)限,下面就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下2026-03-03

