您的位置:首页 > 理论基础 > 计算机网络

centos7.2 源码编译安装nginx,实现tcp反向代理,不中断服务新增编译模块

2017-11-09 17:45 956 查看
   我们很多时候,需要将局域网内服务器集群中的某台机器的某个端口映射到外网,可以直接通过代理服务器连接到局域网内的电脑,进行操作。而nginx除了能实现http的反向代理外和负载均衡外,还能实现tcp的反向代理,做数据库的负载均衡。非常的方便简介,平时还可以作为nat网关一样来使用,棒棒的

   下面讲一下如何实现nginx 的tcp反向代理,首先,直接用yum安装的nginx,是默认不安装tcp模块的,所以需要自己编译nginx源码进行 安装,从nginx 1.9版本开始,安装包内就自带了tcp模块,只需要在安装的时候,声明一下一起安装就行了。

1 . 首先,下载nginx 。官网下载: http://nginx.org/en/download.html
wget http://nginx.org/download/nginx-1.12.1.tar.gz yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel        ## 安装一些依赖包
tar -zxvf nginx-1.12.1.tar.gz       ## 解压
mv nginx-1.12.1 /usr/local/          ## 放入/usr/local/目录下,推荐,当然也可以是别的位置
cd nginx-1.12.1            ## 进入解压后的文件价
groupadd nginx                        ## 添加用户组
useradd nginx -g nginx -s /sbin/nologin -M       ## 添加用户名
./configure --with-stream --with-stream_ssl_module --with-http_stub_status_module --user=nginx --group=nginx         ## 加入tcp模块,https模块和状态监控模块一起编译(需要什么模块根据自己的需求进行编译),并指定用户名,用户组
make && make install     ## 编译 安装


编译完后,在/usr/local/下会出现一个nginx文件夹,里面sbin里的nginx则为运行文件。配置文件为conf/nginx.conf 修改配置文件,添加如下内容:
stream {                  ## stream模块,就跟http模块一样
        server {             ## 里面乐意有多个监听服务,配置监听端口和代理的ip和端口就可以进行tcp代理了。
          listen 12345;
          proxy_pass 192.168.1.2:3306;
        }
        server {
          listen 12346;
          proxy_pass 192.168.9.1.3:3306;
        }
## 在tcp请求代理中,也是可以使用负载均衡的upstream的
upstream mysql{
server 192.168.9.3:3306;
server 192.168.9.4:3306;
}
server {
listen 33333;
proxy_pass myqsl;
}
}


保存退出,启动nginx ,然后尝试用连接 该ip的监听端口,则显示成功连接到数据库。
到此。则可以正常访问远程局域网内的数据库了。

然后,当你nginx已经正常使用中,由于新的需求常会 需要新增模块,按照下面方法,可以实现无缝新增模块,不需要关闭nginx,不中断服务。无任何影响## 首先,进入之前安装nginx的源码目录
cd /usr/local/nginx-1.12.1 ## 我的目录为这个
## 这里随意写入你要新增的模块,可以写任意多个,但是注意要包含已存在模块,避免正在使用的原服务出问题
./configure --with-stream --with-stream_ssl_module --with-http_stub_status_module --with-xxxxxx --with-xxxxx --user=nginx --group=nginx
make ## 编译

## 重点!很多网上博文说不要make install。其实不然,make install会自动将新编译好的nginx运行程序替换原程序,且不会中断服务,也不会删除任何已存在的缓存,日志等
make install
## 然后进入nginx目录,重启一下nginx即可
cd /usr/local/nginx
killall nginx && sbin/nginx

## 查看nginx模块,看看是否安装上了
sbin/nginx -V



OK,就到这里,有任何疑问或问题的,欢迎留言,看到就会回答
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  centos7 nginx