Nginx反向代理的主被动健康检查方式

 更新时间:2024年01月26日 14:34:09   作者:XL's妃妃  
这篇文章主要介绍了Nginx反向代理的主被动健康检查方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、环境介绍

1、系统:centos7

2、应用部署:weblogic 12c

2、nginx版本:nginx-1.7.2

3、应用1(weblogic1):192.168.29.149:7018/realware

4、应用2(weblogic2):192.168.29.150:7012/realware

5、nginx服务器:192.168.29.152:8080

二、下载nginx-1.7.2

mkdir -p /opt/src
cd opt/src
wget http://nginx.org/download/nginx-1.7.2.tar.gz
tar -xvf nginx-1.7.2.tar.gz

三、下载主动健康检查插件

cd opt/src
yum -y install wget
wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
yum install unzip -y
unzip master.zip

四、安装主动健康检查插件

yum install patch -y
cd /opt/src/nginx-1.7.2
patch -p1 < /opt/src/nginx_upstream_check_module-master/check_1.7.2+.patch 

五、编译安装nginx

cd /opt/src/nginx-1.7.2
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
./configure --prefix=/usr/local/nginx --add-module=/opt/src/nginx_upstream_check_module-master
make
make install

六、反向代理被动健康检查与反向代理主动健康检查

1、反向代理被动健康检查

配置文件修改:vim /usr/local/nginx/conf/nginx.conf

#user  nobody;
worker_processes  1;
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    #upstream 后面要用nginx所在服务器的IP,不然可能会导致网络的css、js等外部连接无法调用。
    upstream 192.168.29.152 {
    #以5s为周期,5秒内只要有一次访问失败,则这5s内不会再向该ip发起访问。可以根据情况调整。
    server 192.168.29.150:7012 max_fails=1 fail_timeout=5s;
    server 192.168.29.149:7018 max_fails=1 fail_timeout=5s;
}
    server {
        listen       8080;
        #server_name 后面要用web应用的名称
		server_name  realware;
        location / {
			proxy_pass   http://192.168.29.152; #这里的IP要与upstream保持一致。
			proxy_set_header X-Forwarded-Host $host;
			proxy_set_header X-Forwarded-Server $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header Host $host:$server_port;
	}
        }

}

2、反向代理主动健康检查

配置文件修改:vim /usr/local/nginx/conf/nginx.conf

#user  nginx;
worker_processes 1;

error_log  /usr/local/nginx/logs/error.log info;
#er


#ror_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        /usr/local/nginx/logs/nginx.pid;
# worker_rlimit_nofile 65535;
events
{
  # use epoll;
  worker_connections 65535;
}
http
{
	include mime.types;
	default_type application/octet-stream;
	log_formmat main '$remote_addr - $remote_user [$time_local] "$request" '
					'$status $body_bytes_sent "$http_referer" '
					'"$http_user_agent" "$http_x_forwarded_for"';
	access_log /usr/local/nginx/logs/access.log main
	sendfile on;
	#tcp_nopush on;
	keepalive_timeout 60;
	client_max_body_buffer_size 100m;
	client_max_body_size 40m;
	
	upstream realware_service {
		server 192.168.29.149:7018;
		server 192.168.29.150:7012;
		#以10s为一个周期,每隔10snginx会自动向上游服务器发送一次请求,如果超过5s超时且达到3次,则该服务器标记为不可用;
		#如果请求次数有一次以上没有超时,这标记为可用
		check interval=10000 rise=1 fall=3 timeout=5000 type=tcp default_down=true;
		check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n";
		check_http_expect_alive http_2xx http_3xx;
	}
	upstream realware_stamp {
		server 192.168.29.149:7018 weight=5;
		server 192.168.29.150:7012 weight=5;
		#以10s为一个周期,每隔10snginx会自动向上游服务器发送一次请求,如果超过5s超时且达到3次,则该服务器标记为不可用;
		#如果请求次数有一次以上没有超时,这标记为可用
		check interval=10000 rise=1 fall=3 timeout=5000 type=tcp default_down=true;
		check_http_send "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n";
		check_http_expect_alive http_2xx http_3xx;
	}
	server {
		listen       8080;
		server_name  locahost;
		add header Access-Control-Allow-Origin *;
		add header Access-Control-Allow-Meehods 'GET,POST';
		add header Accesg-Control-Allow-Headers 'DNT,x-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'

		access_log /usr/local/nginx/logs/access.log main
		
		location /realware {
			proxy_connect_timeout 60;#与上游服务器的连接超时时间
			proxy_read_timeout 60;#与上游服务器的读取超时时间
			proxy_send_timeout 60;#与上游服务器的发送超时时间
			proxy_pass http://realware_service;
			proxy_set_header X-Forwarded-Host $host;
			proxy_set_header X-Forwarded-Server $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header Host $host:8080;
			peoxy_set_header x-Real-IP $remote_addr;
			peoxy_set_header REMOTE-HOST $remote_addr;
		}	
		
	server {
		listen       8081;
		server_name  locahost;
		add header Access-Control-Allow-Origin *;
		add header Access-Control-Allow-Meehods 'GET,POST';
		add header Accesg-Control-Allow-Headers 'DNT,x-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'

		access_log /usr/local/nginx/logs/access.log main
		
		location /estamp {
			proxy_connect_timeout 60;#与上游服务器的连接超时时间
			proxy_read_timeout 60;#与上游服务器的读取超时时间
			proxy_send_timeout 60;#与上游服务器的发送超时时间
			proxy_pass http://estamp_service;
			proxy_set_header X-Forwarded-Host $host;
			proxy_set_header X-Forwarded-Server $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header Host $host:$server_port;
			peoxy_set_header x-Real-IP $remote_addr;
			peoxy_set_header REMOTE-HOST $remote_addr;
		}	
		
		#健康监控页面
		location /status {
			check_status html;
			access_log   off;
		}
	}
}

五、启动nginx

cd /usr/local/nginx/sbin
./nginx

六、检验结果

在浏览器输入http://192.168.29.152:8080/realware 查看是否配置成功;

在浏览器输入http://192.168.29.152:8080/status

在这里插入图片描述

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Nginx反向代理基本设置的21个指令详解

    Nginx反向代理基本设置的21个指令详解

    这篇文章主要介绍了Nginx反向代理基本设置的21个指令,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • nginx设置上传目录无执行权限的方法

    nginx设置上传目录无执行权限的方法

    在windows+iis下,可以设置上传目录,类似:upload,uploadfile,attachments,这样的目录下面无脚本执行权限,从而防止非法用户上传脚本得到webshell
    2010-11-11
  • nginx服务器通过配置来解决API的跨域问题

    nginx服务器通过配置来解决API的跨域问题

    这篇文章主要给大家介绍了关于nginx服务器是如何配置来解决API跨域问题的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • Nginx实现集群的负载均衡配置过程解析

    Nginx实现集群的负载均衡配置过程解析

    这篇文章主要为大家详细介绍了Nginx实现集群的负载均衡配置过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 简介Nginx中的location匹配规则

    简介Nginx中的location匹配规则

    这篇文章主要介绍了简介Nginx中的location匹配规则,Nginx是一个高速的基于事务的非阻塞服务器,需要的朋友可以参考下
    2015-07-07
  • 解决httpd占用80端口导致Nginx启动失败报错的解决办法

    解决httpd占用80端口导致Nginx启动失败报错的解决办法

    今天在建自己小网站时启动Nginx时,发现其报下列错误,意思是因为80端口被占用导致Nginx启动失败,所以本文小编给大家介绍介绍如何解决解决httpd占用80端口导致Nginx启动不成功报nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    2023-11-11
  • nginx如何配置x-forwarded-for头部

    nginx如何配置x-forwarded-for头部

    这篇文章主要介绍了nginx如何配置x-forwarded-for头部,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • CentOS7系统下用YUM安装Nginx详解

    CentOS7系统下用YUM安装Nginx详解

    相信大家都知道Nginx ("engine x") 是一个高性能的 HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。这篇文章将详细给大家介绍在CentOS7系统下用YUM安装Nginx的方法,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-11-11
  • 关于Nginx动静分离详解以及配置

    关于Nginx动静分离详解以及配置

    这篇文章主要介绍了关于Nginx动静分离详解以及配置,动静分离是通过中间件将动态请求和静态请求进行分离,分离资源,减少不必要的请求消耗,减少请求延时,需要的朋友可以参考下
    2023-04-04
  • 使用nginx搭建creates.io镜像的教程详解

    使用nginx搭建creates.io镜像的教程详解

    在Rust开发中,经常需要使用Cargo从crates.io下载依赖,而国内几乎没有好用的crates.io镜像,使用本文就来使用使用nginx搭建creates.io镜像吧
    2023-12-12

最新评论