需要在服務器上實現個TCP服務器, 由于已安裝了Nginx, 所以在nginx中給TCP開個口子。
stream模塊
網上文章的說法都是, 1.9.0版之后nginx開始具有TCP/UDP的代理轉發功能, 但需要手動安裝stream模塊.
我用nginx -V命令(注意V是大寫, 可查詢nginx已安裝模塊)查了一下, 我的nginx是1.16.0版本, 并且已經安裝了stream模塊(命令輸出包含--with-stream), 所以我就不用手動安裝了.
配置文件的修改
首先要明確的一點, 關于TCP轉發的配置, 是TCP層面的, 它和HTTP是同一層級, 并不是HTTP的下層.
所以其配置項目要放在nginx的頂級配置文件(/etc/nginx/nginx.conf)的頂級塊里面, 和頂級配置文件中的http塊同屬一個層級. 注意不能放在conf.d文件夾下, 這個文件夾下的配置文件都在http塊級以下.
在頂級配置文件(/etc/nginx/nginx.conf)中添加如下配置塊:
stream {
server {
listen 8998;
proxy_pass 127.0.0.1:8999;
}
}
實現, 監聽8998端口, 轉發8999端口(服務器上的程序實現TCP server在8999端口).
nginx -t檢查一下配置文件,
nginx -s reload重新加載配置, 即可!
UDP的轉發
UDP的轉發類似, 我這次的應用不需要, 也就沒有測試試驗, 不過先記錄在此.
配置塊如下:
stream {
server {
listen 9998 udp;
proxy_pass 127.0.0.1:9999;
}
}