nginx系列(一)之tcp转发模块支持

一、使用说明:

nginx可以一般用来做http的转发,当然也可以用来做tcp转发,需要第三方模块nginx_tcp_proxy_module,下载地址为:https://github.com/yaoweibin/nginx_tcp_proxy_module 作者:Weibin Yao(姚伟斌) (yaoweibin@gmail.com)

二、实验环境:

192.168.1.194服务器(centos 6.5 final版本)

nginx版本:nginx-1.6.1

三、安装配置:

这里假定已经安装好了nginx(安装nginx比较简单,网上案例很多),此刻需要给nginx扩展一个nginx_tcp_proxy_module模块。

下载nginx_tcp_proxy_module到nginx的同级目录:

wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zip -o master.zip

解压此文件

unzip master.zip

可以看到

[root@localhost nginx]# ls
master.zip
nginx_tcp_proxy_module-master
nginx-1.6.1
nginx-1.6.1.tar.gz

然后进入nginx-1.6.1目录,执行:

[root@localhost nginx-1.6.1]# patch -p1 < …/nginx_tcp_proxy_module-master/tcp.patch
patching file src/core/ngx_log.c
Hunk #1 succeeded at 69 (offset 3 lines).
patching file src/core/ngx_log.h
Hunk #1 succeeded at 30 (offset 1 line).
Hunk #2 succeeded at 38 (offset 1 line).
patching file src/event/ngx_event_connect.h
Hunk #1 succeeded at 33 (offset 1 line).
Hunk #2 succeeded at 44 (offset 1 line).

打上补丁。

[root@localhost nginx-1.6.1]# /usr/local/apps/nginx/sbin/nginx -V
nginx version: nginx/1.6.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/apps/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --with-pcre=/home/workspace/auto_deploy/software/nginx/pcre-8.30 --with-openssl=/home/workspace/auto_deploy/software/nginx/openssl-1.0.1i --add-module=…/gnosek-nginx-upstream-fair-a18b409/ --add-module=…/ngx_cache_purge-2.1 --with-http_ssl_module

nginx -V可以查看nginx的版本,以及之前编译的项目。

编译安装nginx_tcp_proxy_module,需要把之前的编译项目都copy进来,在加上新的nginx_tcp_proxy_module模块编译项。

[root@localhost nginx-1.6.1]# ./configure --prefix=/usr/local/rktsapps/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --with-pcre=/home/workspace/auto_deploy/software/nginx/pcre-8.30 --with-openssl=/home/workspace/auto_deploy/software/nginx/openssl-1.0.1i --add-module=…/gnosek-nginx-upstream-fair-a18b409/ --add-module=…/ngx_cache_purge-2.1 --with-http_ssl_module --add-module=…/nginx_tcp_proxy_module-master/

注意后面多了一个–add-module=…/nginx_tcp_proxy_module-master/

[root@localhost nginx-1.6.1]# make && make install

执行安装,安装完成后,执行nginx -V,看看模块是否被编译上去了

[root@localhost nginx-1.6.1]# /usr/local/rktsapps/nginx/sbin/nginx -V
nginx version: nginx/1.6.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/rktsapps/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --with-pcre=/home/workspace/auto_deploy/software/nginx/pcre-8.30 --with-openssl=/home/workspace/auto_deploy/software/nginx/openssl-1.0.1i --add-module=…/gnosek-nginx-upstream-fair-a18b409/ --add-module=…/ngx_cache_purge-2.1 --with-http_ssl_module --add-module=…/nginx_tcp_proxy_module-master/

ok,nginx_tcp_proxy_module已经被编译上去了,至此nginx已经支持tcp转发咯。

下面列一份tcp转发的nginx配置文件

vim tcp_test.conf

内容为:
tcp {
upstream tcpserver1 {
# simple round-robin
ip_hash;
server 192.168.1.70:26000;
server 192.168.1.71:26001;
server 192.168.1.72:26002;
server 192.168.1.73:26003;
check interval=3000 rise=2 fall=3 timeout=2000;
#check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello;
#check interval=3000 rise=2 fall=5 timeout=1000 type=http;
#check_http_send “GET / HTTP/1.0\r\n\r\n”;
#check_http_expect_alive http_2xx http_3xx;
}
server {
listen 26000;
proxy_pass tcpserver1;
so_keepalive on;
tcp_nodelay on;
access_log logs/tcpserver1_access.log;
}
}

tcp的默认的access日志为默认为tcp_access.log,可以单独指定的。

注意,这里的tcp_test.conf,不能在配置文件中被包括进http{ }里面,否则会报

nginx: [emerg] “tcp” directive is not allowed here in xxx

这类的错误。这里一定要注意,tcp{ }和http{ }在nginx.conf配置文件里面是对等关系!

访问日志的说明如下:

log_time worker_process_pid client_ip host_ip accept_time upstream_ip bytes_read bytes_write

2011/08/02 06:19:07 [5972] 127.0.0.1 0.0.0.0:1982 2011/08/02 06:18:19 172.19.0.129:80 80 236305

转载于:https://blog.51cto.com/zhengmingjing/1907775

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值