Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。(百度百科- http://www.dwz.cn/x32kG)
1.Nginx安装
安装make命令:yum -y install gcc automake autoconf libtool make
我使用的环境是64位 Ubuntu 14.04。nginx依赖以下模块:
gzip模块需要 zlib 库
rewrite模块需要 pcre 库
ssl 功能需要openssl库
1.1.安装pcre
获取pcre编译安装包,在http://www.pcre.org/上可以获取当前最新的版本
解压缩pcre-xx.tar.gz包。
进入解压缩目录,执行./configure。
make & make install
1.2.安装openssl
获取openssl编译安装包,在http://www.openssl.org/source/上可以获取当前最新的版本。
解压缩openssl-xx.tar.gz包。
进入解压缩目录,执行./config。
make & make install
1.3.安装zlib
获取zlib编译安装包,在http://www.zlib.net/上可以获取当前最新的版本。
解压缩openssl-xx.tar.gz包。
进入解压缩目录,执行./configure。
make & make install
1.4.安装nginx
获取nginx,在http://nginx.org/en/download.html上可以获取当前最新的版本。
解压缩nginx-xx.tar.gz包。
进入解压缩目录,执行./configure
make & make install
若安装时找不到上述依赖模块,使用–with-openssl=、–with-pcre=、–with-zlib=指定依赖的模块目录。如已安装过,此处的路径为安装目录;若未安装,则此路径为编译安装包路径,nginx将执行模块的默认编译安装。
启动nginx:
cd nginx_home/sbin
./nginx
浏览器中输入http://localhost可以验证是否安装启动成功。
2.安装nginx tcp代理
nginx_tcp_proxy_module是国人开发的nginx的tcp代理模块。注: 官方例子使用的nginx-1.2.1版本,本人使用nginx-1.10.1版本配置失败,原因未知。
git地址:https://github.com/yaoweibin/nginx_tcp_proxy_module ,安装步骤参考其git feeds,下面是自己安装过程中遇到的问题及解决方法:
2.1.make出错
./configure: error: SSL modules require the OpenSSL library.
ubuntu下解决办法:
apt-get install openssl
apt-get install libssl-dev
centos下解决办法:
yum -y install openssl openssl-devel
2.2.pcre包查找失败
/ngx_regex.c:307: undefined reference to `pcre_free_study'
解决方法:
./configure --add-module=/path/to/nginx_tcp_proxy_module --with-pcre=../pcre-8.38 --with-pcre-jit
(确保事先安装pcre: ../pcre-8.38)
2.3.按照git教程设置完毕后,设置tcp代理参数:
nginx.conf主配置文件中增加如下配置配置:(也可以在主配置文件中配置include,包含tcp转发的配置文件
include /opt/nginx_tcp_proxy_module-master/tcp_proxy.conf)
tcp {
upstream proxy_name {
# simple round-robin
server 192.168.1.10:8000;
server 192.168.1.10:8001;
server 192.168.1.11:8000;
server 192.168.1.11:8001;
check interval=3000 rise=2 fall=5timeout=1000;
#check interval=3000 rise=2 fall=5timeout=1000
#check interval=3000 rise=2 fall=5timeout=1000
#check_http_send "GET /HTTP/1.0\r\n\r\n";
#check_http_expect_alive http_2xxhttp_3xx;
}
server {
listen 8888;
proxy_pass proxy_name;
}
}
说明:
check interval 健康检查,单位是毫秒
rise 检查几次正常后,将reslserver加入以负载列表中
fall 检查几次失败后,摘除realserver
timeout 检查超时时间,单位许毫秒
具体可查看nginx_tcp_proxy_module-master/README,很详细。