nginx代理TCP埠如何配置(親測)

willingtolove發表於2020-12-20


#如果要代理TCP埠,需要在配置編譯的時候加上stream模組

1、檢視是否已存在stream模組

nginx -V
root@zyl:~# nginx -V
nginx version: nginx/1.19.3
built by gcc 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) 
built with OpenSSL 1.1.1  11 Sep 2018
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.19.3/debian/debuild-base/nginx-1.19.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'

可以看到已包含了stream相關模組:
-with-stream --with-stream_ssl_module

2、如果沒有該模組,重新編譯nginx新增模組步驟如下

參考:https://blog.csdn.net/weixin_30892987/article/details/96127891?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.control

3、nginx編譯安裝之-./configure 引數簡單介紹

--prefix=/etc/nginx 	指向安裝目錄。
--sbin-path=/usr/sbin/nginx 	 指定執行程式檔案存放位置。
--modules-path=/usr/lib/nginx/modules 	指定第三方模組的存放路徑
--conf-path=/etc/nginx/nginx.conf	指定配置檔案存放位置。

#修改配置檔案

stream 與 http 是一個層級的,放到http節點後面即可。

stream { 
	upstream vod { 
		#hash $remote_addr consistent; 
		server 172.18.254.161:1680; #weight=5; 
	}
	server {
		listen 1680;
		#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
		#ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
		#ssl_certificate /home/zyzx/STAR_haut_edu_cn.crt;#這裡需要填寫證書的地址,可以是pem或者crt
		#ssl_certificate_key /home/zyzx/STAR_haut_edu_cn.key;#這裡需要填寫證書key的地址
		proxy_connect_timeout 10s;
		proxy_timeout 30s;
		proxy_pass vod;
	}
}

或者這樣

stream { 
	server {
		listen 1680;
		#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
		#ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
		#ssl_certificate /home/zyzx/STAR_haut_edu_cn.crt;#這裡需要填寫證書的地址,可以是pem或者crt
		#ssl_certificate_key /home/zyzx/STAR_haut_edu_cn.key;#這裡需要填寫證書key的地址
		proxy_connect_timeout 10s;
		proxy_timeout 30s;
		proxy_pass 172.18.254.161:1680;
	}
}

#參考

http://www.weixueyuan.net/a/751.html


相關文章