Nginx實(shí)現(xiàn)TCP端口的偵聽(tīng)及轉(zhuǎn)發(fā)操作步驟
一、說(shuō)明
由于我們?cè)谑褂胢qtt時(shí),會(huì)接收大量的客戶端連接,單機(jī)的mqtt肯定是扛不住的,所以需要一個(gè)mqtt的集群來(lái)處理,這時(shí)就得有一個(gè)網(wǎng)關(guān)來(lái)負(fù)責(zé)請(qǐng)求的轉(zhuǎn)發(fā)
nginx從1.9.0版本開(kāi)始,新增了ngx_stream_core_module模塊,使nginx支持四層代理和負(fù)載均衡。 默認(rèn)編譯時(shí)該模塊未編譯進(jìn)去,需要編譯時(shí)添加 --with-stream,--with-stream_ssl_module,使其支持stream代理
在之前的版本如果想支持,需要打補(bǔ)丁,安裝模塊nginx_tcp_proxy_module。 http代理,通常就是我們說(shuō)的七層代理,工作在第七層應(yīng)用層。 而tcp代理,就是我們常說(shuō)的四層代理,工作在網(wǎng)絡(luò)層和傳輸層
http代理,通常就是我們說(shuō)的七層代理,工作在第七層應(yīng)用層
而tcp代理,就是我們常說(shuō)的四層代理,工作在網(wǎng)絡(luò)層和傳輸層
需要用到的命令
命令 | 說(shuō)明 |
---|---|
firewall-cmd --list-ports | 查看開(kāi)放的端口號(hào) |
firewall-cmd --zone=public --add-port=8888/tcp --permanent | 開(kāi)放對(duì)應(yīng)端口號(hào):8888 |
firewall-cmd --zone=public --remove-port=80/tcp --permanent | 關(guān)閉端口號(hào) |
firewall-cmd --reload | 重啟防火墻 |
systemctl status firewalld.service | 查看防火墻狀態(tài) |
二、操作步驟
2.1 查看nginx是否安裝stream
nginx -V | tr ' ' '\n'|grep stream
如果出現(xiàn)下面兩項(xiàng),說(shuō)明支持
--with-stream --with-stream_ssl_module
2.2 如果沒(méi)有則重新安裝nginx
1. sudo yum install nginx -y 2. sudo yum -y install epel-release 3. yum -y install nginx-all-modules.noarch 4. vi nginx.conf #頂部加一行l(wèi)oad_module /usr/lib64/nginx/modules/ngx_stream_module.so;
2.3 tcp代理(mqtt為例)
- tcp代理與我們平常說(shuō)的網(wǎng)站反向代理不一樣,它是基于tcp協(xié)議
- stream反向代理模塊與http和events是平級(jí)的,不要把配置寫到http里面了
為了方便添加stream配置,我們單獨(dú)在nginx目錄下創(chuàng)建一個(gè)stream目錄,存放tcp代理配置文件
在 /etc/nginx/nginx.conf 中加入如下:
stream { log_format proxy '$remote_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received ' '$session_time "$upstream_addr" ' '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"'; access_log /var/log/nginx/stream.log proxy; open_log_file_cache off; include stream/*conf; }
在nginx/stream下創(chuàng)建一個(gè)mqtt.conf配置文件
upstream mqtt_tcp_server{ server ec2-52-90-93-84.compute-1.amazonaws.com:8883; } server { listen 8883; #監(jiān)聽(tīng)端口 proxy_connect_timeout 150s; proxy_timeout 150s; proxy_pass mqtt_tcp_server; #反向代理地址 proxy_buffer_size 3M; tcp_nodelay on; }
重載nginx
/usr/local/nginx/sbin/nginx -s reload
當(dāng)我們?cè)L問(wèn)nginx的8883端口時(shí),會(huì)自動(dòng)代理到目標(biāo)主機(jī)的8883端口上
總結(jié)
到此這篇關(guān)于Nginx實(shí)現(xiàn)TCP端口的偵聽(tīng)及轉(zhuǎn)發(fā)的文章就介紹到這了,更多相關(guān)Nginx TCP端口偵聽(tīng)及轉(zhuǎn)發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
windows安裝nginx部署步驟圖解(反向代理與負(fù)載均衡)
這篇文章主要介紹了windows安裝nginx部署步驟,設(shè)置反向代理與負(fù)載均衡的使用方法,需要的朋友可以參考下2014-02-02淺析nginx 客戶端返回499的錯(cuò)誤碼的問(wèn)題
我們服務(wù)器客戶端一直有返回錯(cuò)誤碼499的日志,以前覺(jué)得比例不高,就沒(méi)有仔細(xì)查過(guò),最近有領(lǐng)導(dǎo)問(wèn)這個(gè)問(wèn)題,為什么耗時(shí)只有0.0幾秒,為啥還499了?最近幾天就把這個(gè)問(wèn)題跟蹤定位了一下,這里做個(gè)記錄,對(duì)nginx返回499錯(cuò)誤碼相關(guān)知識(shí)感興趣的朋友一起看看吧2022-10-10配置Nginx服務(wù)器展示隨機(jī)首頁(yè)與空白圖片的方法
這篇文章主要介紹了配置Nginx服務(wù)器展示隨機(jī)首頁(yè)與空白圖片的方法,分別用到了ngx_http_random_index_module模塊和ngx_http_empty_gif_module模塊,需要的朋友可以參考下2016-01-01nginx如何通過(guò)proxy_pass設(shè)置反向代理,隱藏端口號(hào)
這篇文章主要介紹了nginx如何通過(guò)proxy_pass設(shè)置反向代理,隱藏端口號(hào)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Ubuntu環(huán)境下安裝部署Nginx詳細(xì)步驟(有網(wǎng))
Nginx是一個(gè)開(kāi)源的?HTTP?網(wǎng)絡(luò)服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于Ubuntu環(huán)境下安裝部署Nginx(有網(wǎng))的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01Nginx配置多個(gè)訪問(wèn)路徑的實(shí)現(xiàn)
本文主要介紹了Nginx配置多個(gè)訪問(wèn)路徑的實(shí)現(xiàn),Nginx通過(guò)配置多個(gè)service就可以實(shí)現(xiàn)多訪問(wèn)路徑,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10Nginx(PHP/fastcgi)的PATH_INFO問(wèn)題
PATH_INFO是一個(gè)CGI 1.1的標(biāo)準(zhǔn),經(jīng)常用來(lái)做為傳參載體. 比如, 我們可以使用PATH_INFO來(lái)代替Rewrite來(lái)實(shí)現(xiàn)偽靜態(tài)頁(yè)面, 另外不少PHP框架也使用PATH_INFO來(lái)作為路由載體.2011-08-08