所需文件:
1、 nginx源码文件:nginx-1.9.12.tar.gz
下载地址:http://nginx.org/en/download.html
2、 pcre 源码文件:pcre-8.31.tar.gz
下载地址:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
初次使用nginx,目的并不是为了做http代理,而是为了做TCP端口转发,一开始安装了nginx-1.4.1,捣鼓了很久,没想到这个版本并不支持TCP端口转发,虽然网上能搜到一些牛人自己写的TCP转发模块,加进源文件进行编译应该也是可以实现的,但是nginx自从1.9版本之后,已经能支持TCP端口转发了。
为什么不用HAproxy,因为我发现居然打不开官方网站,就算科学上网也不行。。。而且在solaris上编译的时候有很多错误,也懒得去研究了。下面的所有操作我都是在root用户下能成功,也有用过普通用户进行,但是经常要不提示没权限,要不就是找不到命令,我就干脆用root用户进行操作了。
1、 将nginx-1.9.12.tar.gz和pcre-8.31.tar.gz拷到主机的/usr/src/目录下.
2、 先编译安装PCRE.
gunzip pcre-8.31.tar.gz
tar xf pcre-8.31.tar
cd pcre-8.31
./configure
如果运行./configure有提示在环境变量$PATH中找不到c compiler,一般solaris系统是有安装gcc的,只要声明一下变量就行了:
export PATH=$PATH:/usr/sfw/bin
然后再重新编译安装
./configure
make && make install
3、 接下来编译安装nginx。
gunzip nginx-1.9.12.tar.gz
tar xf nginx-1.9.12.tar
cd nginx-1.9.12
./configure --with-stream --with-cc=/usr/sfw/bin/gcc
make && make install
configure的时候,因为nginx1.9虽然支持TCP转发,但是这个模块并不是默认开启的,所以必须加上–with-stream 参数将TCP转发模块配置进来,可参数官网文章(http://nginx.org/en/docs/stream/ngx_stream_core_module.html)–with-cc=/usr/sfw/bin/gcc是指明cc的位置。我这里没有指定安装路径,所以nginx默认安装在/usr/local/nginx这个目录,可以通过–with-prefix指定安装目录。
4、 配置nginx。
#user nobody; #运行用户
worker_processes 1; #启动进程,通常设置成和cpu的数量相等
#全局错误日志
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid文件
#pid logs/nginx.pid;
#设置工作模式和连接数上限
events {
#单个后台worker process进程的最大并发链接数
worker_connections 1024;
}
stream {
upstream backend {
hash $remote_addr consistent;
#真实提供服务的主机
server 127.0.0.1:22 weight=5 max_fails=3 fail_timeout=30s;
}
#安装nginx的主机
server {
listen 10001; #侦听的端口
proxy_connect_timeout 1s;
proxy_timeout 3s; #如果转发的是ssh服务,建议注释掉,有个这个配置,如果3s内没请求,nginx会把连接中断
proxy_pass backend;
}
}
启动nginx的时候,如果提示“nginx: [error] open() “nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)”
解决方法是启动的时候,使用-c参数指定nginx.conf文件的位置就可以解决:
./nginx -c /usr/local/nginx/conf/nginx.conf