您的当前位置:首页编译nginx平滑添加stream模块

编译nginx平滑添加stream模块

2022-05-12 来源:飒榕旅游知识分享网
编译nginx平滑添加stream模块

--很好1、操作背景

操作系统版本:CentOS Linux release 7.4.1708 (Core)nginx版本:1.13.4

nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx⽀持四层负载均衡。默认编译的时候该模块并未编译进去,需要编译的时候添加--with-stream,使其⽀持stream代理。

2、nginx编译添加stream模块2.1、查看原nginx编译参数

[root@test-server sbin]# nginx -Vnginx version: nginx/1.13.4

built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/usr/local/nginx/tmp/client/ --http-proxy-temp-path=/usr/local/nginx/tmp/proxy/ --http-fastcg

2.2、添加stream模块进⾏重新编译

此处nginx源码⽬录为:/usr/local/src/nginx-1.13.4,即为编译命令执⾏⽬录。

1

2编译命令如下:

3./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/usr/local/nginx/tmp/client/ --http-proxy-temp-4path=/usr/local/nginx/tmp/proxy/ --http-fastcgi-temp-path=/usr/local/nginx/tmp/fcgi/ --with-poll_module --with-file-aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp --http-scgi-temp-path=/usr/local/nginx/scgi_temp --with-pcre=/usr/local/src/pcre-8.41 --with-stream2.3、进⾏make操作

此处nginx源码⽬录为:/usr/local/src/nginx-1.13.4,即为编译命令执⾏⽬录。make

此处⼀定不能使⽤make install命令,执⾏该命令会将原有nginx⽬录进⾏覆盖。

3、关停nginx同时复制新的nginx启动⽂件

1关闭nginx服务

2systemctl stop nginx3

4备份原有nginx⼆进制⽂件。

5cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-no-strem6

7复制新编译好的nginx⼆进制⽂件。从此处nginx源码⽬录为:/usr/local/nginx-1.13.4。即为编译命令执⾏⽬录。8cp ./objs/nginx /usr/local/nginx/sbin/nginx4、启动测试 

启动nginx。

systemctl start nginx

查看nginx模块信息。nginx -V

nginx version: nginx/1.13.4

built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/usr/local/nginx/tmp/client/ --http-proxy-temp-path=/usr/local/nginx/tmp/proxy/ --http-fastcg可以看到stream模块已经编译到nginx内了。

5、nginx stream模块配置简析

stream段的配置要与http段在同级⽬录。此处引⽤的为官⽅nginx说明配置。stream {

upstream backend {

hash $remote_addr consistent;

server backend1.example.com:12345 weight=5;

server 127.0.0.1:12345 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3; }

upstream dns {

server 192.168.0.1:53535; server dns.example.com:53; }

server {

listen 12345;

proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass backend; }

server {

listen 127.0.0.1:53 udp reuseport; proxy_timeout 20s; proxy_pass dns; }

server {

listen [::1]:12345;

proxy_pass unix:/tmp/stream.socket; }}

举⼀个栗⼦,利⽤stream模块代理 zk服务的2181端⼝。1

2stream {

3 upstream zk_server {

server 172.16.3.8:2181 weight=5;4 }

5 server {

6 listen 2181 tcp;7 proxy_responses 1; proxy_timeout 20s;8 proxy_pass zk_server;9 }10}11

6、编译nignx systemd服务启动⽂件

[Unit]

Description=nginx - high performance web serverDocumentation=http://nginx.org/en/docs/

After=network.target remote-fs.target nss-lookup.target

[Service]Type=forking

PIDFile=/var/run/nginx.pid

ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.confExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDPrivateTmp=true[Install]

因篇幅问题不能全部显示,请点此查看更多更全内容