学习Nginx反向代理实现简单负载均衡



Nginx proxy作为Nginx的重要功能,使用nginx proxy基本可以实现一个完整的7层负载均衡。其特色如下:1、功能强大,性能卓越,运行稳定。2、配置简单灵活。

Nginxproxy作为Nginx的重要功能,使用nginx proxy基本可以实现一个完整的7层负载均衡。 其特色如下: 1、功能强大,性能卓越,运行稳定。 2、配置简单灵活。 3、能够自动剔除工作不正常的后端服务器。 4、上传文件使用异步模式。 5、支持多种分配策略,可以分配权重,分配方式灵活

配置环境: 三台centos6.2X86 一台做Nginx Proxy 二台Apache做页面测试服务器

配置步骤: 安装前要先解决包的依赖问题:pcre-devel openssl zlib-devel

一、安装nginx服务器 1、后台的web服务使用Apache,有关apache 配置的文章这里不多说,本文重点在配置nginx反向代理。 2、安装Nginx服务

3、修改nginx主配置文件,主配置文件路径:/usr/local/site/nginx/conf/nginx.conf,最好配置文件作下备份;

Nginx.conf代码

user www;指定nginx的运行用户, worker_processes 1;指定线程,默认情况下Nginx是单线程运行, #error_log logs/error.log; 日志模块 #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; //inx主进程ID events { use epoll;//inx的高效模式; worker_connections 65535;//文件最大的连接数; }http { includemime.types;//置文件模块; default_type application/octet-stream;//核心配置文件模块; sendfileon;//开启高效传输模式; tcp_nopushon;//防止网络端口阻塞; #keepalive_timeout 0; keepalive_timeout 65; #gzip on;//开启压缩模块,需要注意的是在配置文件中开启之后是不生效的,还需要加载gzip模块server { listen80;//监听的80端口 server_name proxy.rsyslog.net;//指定代理服务器的域名location / { root html;//配置文件所在的目录,这里是相对路径 index index.html index.htm; //页面文件的类型; } error_page 404/404.html;//相关错误提示页面 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }}}

重启服务,测试是否正常,links proxy.rsyslog.net 域名需要在dns服务器上配置正确。

Nginx支持不间断运行:

Linux命令代码

kill-HUP`cat/usr/local/site/nginx/logs/nginx.pid`

kill -HUP `cat /usr/local/site/nginx/logs/nginx.pid`

查看Nginx服务状态,确定正常之后我们来配置Nginx Proxy,查看Nginx端口

二、配置nginx 反向代理服务器,反向代理服务器的配置如下;需要修改两个两个地方,在HTTP字段里面修改和Server字段中修改,在下图中只把需要添加的文件列出来即可。

如下是HTTP负载均衡模块upstream 指定设置一群服务器,服务器可以指定不同的权重,默认为1。 Nginx支持5种方式的查询, 1、轮询 Nginx默认的查询方式 2、Weight 指定分配的轮询方式,根据后端服务器的性能来做权重,在此案例中我们使用这种方式来轮询的 3、Ip_hash 每个请求按照ip的hash结果分配,这样每个IP地址就可以固定的访问后端的一台服务器,解决了session的问题 4、Fair 第三方模块,这个原理是按照响应时间的优先来分配的, 5、url_hash 按照url的hash结果来分配请求,使每个url定向到同一个后端的服务器;

Nginx.conf代码

upstream cluster { server 192.168.100.238:80 weight=8 max_fails=2 fail_timeout=30s; server 192.168.100.248:80 weight=8 max_fails=2 fail_timeout=30s; }server { listen80; server_name localhost;location / {root html;index index.html index.htm;proxy_pass ; //指定需要代理的URL,proxy_redirect off;//如果需要从后端打开location和Refresh字段,可以开启。proxy_set_header X-Real-IP $remote_addr; //允许将发送到后端的服务器请求重新定义或者增加一个字段,这个可以是变量也是文本组合。proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; //联系下面PS中所写,在后端web中就算加上$http_x_Forwarded_for这条,也得不到用户的IP,所以在nginx反向代理添加Header头信息 X-Forwarded-For在配合后端服务器日志文件的$http_x_Forwarded_for这条就可以获得用户的IP地址了。proxy_set_header Host $host; //首先说明 proxy_set_header 指令在向反向代理的后端Web服务器发起请求时添加指定的 Header头信息,后端web服务器有多个基于域名的虚拟主机时,通过头信息Host,用于指定请求的域名,这样后端web才能识别反向代理请求哪个虚拟主机处理。proxy_next_upstream error timeout invalid_header http_500 http_502 http_503http_504 http_404; 服务器头部超时相应的各种状态 } }}

配置完成,平滑重启Nginx服务:kill -HUP `cat /usr/local/site/nginx/logs/nginx.pid`

三、测试,刷新测试能正常进行负载,可以根据自己的环境来对nginx proxy的设置轮询模式;

Nginx反向代理的原理优点:

人生没有彩排,每天都是现场直播。

学习Nginx反向代理实现简单负载均衡

相关文章:

你感兴趣的文章:

标签云: