nginx配置tcp反向代理及负载均衡(基于已有的nginx)
1:下载nginx源码包
wget http://nginx.org/download/nginx-1.4.7.tar.gz
2:下载nginx tcp模块包
wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zip
3:查看nginx已经加载了哪些模块
/usr/local/nginx/sbin/nginx -V
可以看到已引入的模块: --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-http_realip_module --with-http_image_filter_module
4:解压nginx和tcp包,进入解压后的nginx源码包
执行下面的配置shell(引入tcp和之前的模块)
./configure --prefix=/usr/local/nginx--with-http_stub_status_module --with-http_ssl_module --with-pcre --with-http_realip_module --with-http_image_filter_module --add-module=../nginx_tcp_proxy_module-master/
5:编译nginx
make //此处千万不要执行make install ,否则会覆盖原先的nginx
编译完成后,会在此目录生成1个objs的目录,里面的nginx就是新的执行文件
6:备份原先的nginx执行文件
cp /usr/local/nginx/sbin/nginx
nginx_back
7: 拷贝新的nginx执行文件
cp ../nginx-1.4.7/objs/nginx /usr/local/nginx/sbin/
拷贝之前,记得停掉之前的nginx进程
8 :建立新的tcp的nginx的配置文件
大致如下:tcp.conf(可在nginx.conf主配置文件中include,但是需要在http节点外面include)
例如:
include streams/tcp.conf.conf;
http {
}
tcp.conf 配置如下:
tcp {
upstream tcp_cluster {
# simple round-robin
server 127.0.0.1:8992;
check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
listen 9104;
proxy_pass tcp_cluster;
}
}
说明:
check interval 健康检查,单位是毫秒
rise 检查几次正常后,将reslserver加入以负载列表中
fall 检查几次失败后,摘除realserver
timeout 检查超时时间,单位许毫秒
直接安装全新nginx时候会遇到的问题:
问题1:
./configure: error: SSL modules require the OpenSSL library.
解决办法 :
yum -y install openssl openssl-devel
问题2:
configure: error: the HTTP image filter module requires the GD library.
解决办法:
yum install gd-devel
问题3:
[objs/addon/nginx_tcp_proxy_module-master/ngx_tcp_upstream.o] Error 1
解决办法:进入nginx目录执行(缺少补丁)
patch -p1 < /opt/software/nginx_tcp_proxy_module/tcp.patch
sudo kill ps -ef | grep 'nginx' | awk '{print $2}'