solaris10 编译安装nginx1.9,作TCP端口转发

所需文件:
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
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值