nginx实现反向代理负载均衡

Nginx实现反向代理

nginx代理基于是ngx_http_proxy_module模块的功能,该模块有很多属性配置选项,如:

proxy_pass:指定将请求代理至server的URL路径;

    proxy_set_header:将发送至 server的报文的某首部进行重写

proxy_send_timeout:在连接断开之前两次发送到server的最大间隔时长;过了这么长时间后端还是没有收到数据,连接会被关闭

proxy_read_timeout:是从后端读取数据的超时时间,两次读取操作的时间间隔如果大于这个值,和后端的连接会被关闭。

proxy_connect_timeout: 是和后端建立连接的超时时间

proxy_pass配置常见用法有三种:

1、location的/uri将被替换为/newuri,如下:

location /uri {

proxy_pass http://ip:port/newuri;

}

应用场合:页面很固定的时候(如淘宝双十一的主界面)

将/mobi 的请求跳转到新服务器上/mobile目录下

location /mobi/ {

proxy_pass http://172.16.100. 1/mobile/index.php;

}

应用场合:用于流量的分流,将特定的请求分流道特定的服务器上

2、如果location的URI是通过模式匹配定义的,其URI将直接被传递,而不能为其指定转换的另一个URI。

location ~ ^/mobile {

proxy_pass http://172.16.100.2;

}

3、如果在location中使用的URL重定向,那么nginx将使用重定向后的URI处理请求,而不再考虑之前定义的URI

location /youxi {

rewrite ^(.*)$ /index.html break;

proxy_pass http://172.16.100.1;

}

proxy_set_header

proxy_set_header可将发送至server的报文的某首部进行重写;常用于nginx做负载均衡时,获取客户端IP时,需要添加forward头部。

proxy_set_header Host     $host;

proxy_set_header X-REMOTE-IP     $remote_addr;

proxy_set_header X-Forwarded-For      $proxy_add_x_forwarded_for;

原有请求报文中如果存在X-Forwared-For首部,则将client_addr以逗号

分隔补原有值后,否则则直接添加此首部;

$proxy_add_x_forwarded_for; (从后端的服务器上能看到RS的真实IP)

日志查看:

"$remote_addr" $host "$http_x_forwarded_for"

nginx负载均衡是ngx_http_upstream_module模块的功能,需要在配置文件http块上下文中定义upstream块,指定一组负载均衡的后端服务器,然后在proxy_pass中引用,就可以反向代理时实现负载均衡了。

语法:server  address  [parameters];

paramerters:

weight:负载均衡策略权重,默认为1;

max_fails:在一定时间内(这个时间在fail_timeout参数中设置)检查这个服务器是否可用时产生的最多失败请求数

fail_timeout:在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用,进行对后端服务器的健康状态检查;

backup:当所有后端服务器都宕机时,可以指定代理服务器自身作为备份,对外提供维护提示页面;

down:永久不可用。

upstream块里可以用多个server选项配置多个后端服务器,同时还可配置对后端服务器的健康状态检查,可以在server后面加上max_file(proxy_next_upstream指定检查策略,默认为返回超时为失败)和fail_timeout参数实现;也可以用health_check选项来实现健康检测可以指定的参数较多,不过需要定义在location上下文中。

另外,可以指定代理服务器自身作为备份server,当所有后端服务器都宕机时,对外提供维护提示页面。还可以指定负载均衡策略:主要有round_robin(加权轮询,默认)、

hash、ip_hash、least_conn(最少连接)和least_time(最少响应时间,商业版本),策略定义在upstream上下文即可;

配置文件实例:

在http块定义upstream:
   upstream server-cluster {
         server 172.17.253.107:80 weight=4;
         server 172.17.253.157:80 weight=4;
         server 172.17.233.166:80;
        check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        check_http_expect_alive http_2XX http_3XX;
        }
        upstream static-cluster {
         server 172.17.250.209:80;
         server 172.17.254.148:80;
        check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        check_http_expect_alive http_2XX http_3XX;
        }
 在server段引用
 location  ~* .jpg|.png|.gif|.jpeg$ {
                proxy_pass http://static-cluster;
        }

 location  ~* .js|.css|.html|.xml$ {
                proxy_pass http://static-cluster;
        }

对real-server进行健康检测

在http段中
upstream basic_server {
                server 192.168.17.175:80 weight=2;
                server 192.168.17.176:80 weight=5;
                check interval=3000 rise=2 fall=5 timeout=2000 type=http;
                check_http_expect_alive http_2xx http_3xx;
        }
在server段中
server {
        location /status {
        check_status;
        }
}
时间: 2024-10-21 05:31:01

nginx实现反向代理负载均衡的相关文章

Nginx实现反向代理负载均衡与静态缓存

介绍: Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.在连接高并发的情况下,Nginx是Apache服务器不错的替代品,能够支持高达50000个并发连接数的响应. 实验环境: Hostname IP 系统 规划 n2.preferred 192.168.1.2 Centos 6.5 Web server n3.preferred 192.168.1.3 Centos 6.5 Web server n6.preferred 192.168.1.6

Nginx实现反向代理负载均衡功能

反向代理软件Nginx:本身支持反向代理.负载均衡功能,属于L7层负载均衡.Nginx反向代理简单易用,受到大部分中小企业的青睐.LVS:支持L4层负载均衡,haproxy:支持L4.L7层负载均衡L4.L7是指OSI模型中的第四层和第七层:L4:TCP负载均衡:L7:http负载均衡nginx.lvs.haproxy区别参考资料https://www.cnblogs.com/ahang/p/5799065.htmlhttps://www.cnblogs.com/like-minded/p/51

Nginx安装-反向代理-负载均衡-动静分离

安装 1.需要素材 后两个用命令下载安装 openssl-1.0.1t.tar.gzzlib -1.2.8.tar.gz 2:在/usr/src/ 下吧 " nginx-1.16.1.tar.gz " "pcre-8.37.tar.gz" 这两个文件放进去并且解压然后在pcre-8.37这个文件下先 : ./configure 在敲 make && make install pcre-conffig --verison 查看版本 下面安装nginx

简单实现Nginx的反向代理+负载均衡

一.引言 上次我们体验了Nginx反向代理的使用,配置是非常简单的,一句配置搞定.这章我们来讲讲在Nginx如何使用反向代理+负载均衡.负载均衡估计程序员都听说过,比如开发一个电商.web端项目什么后期优化需要做负载均衡,不然同时10w用户同时访问,程序就容易相对应的崩溃. 所谓负载均衡,是由多台服务器或服务共同完成一个功能点,从而达到负载均衡的效果.打个比方:用户请求发起一个请求,网站显示的图片量又比较大,如果说这个时候有N个用户同时访问,那么全部的工作量都放在了一台服务器上,指不定什么时候就

Nginx + Tomcat 反向代理 负载均衡 集群 部署指南

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/53535435 Nginx是一种服务器软件,也是一种高性能的http和反向代理服务器,同时还是一个代理邮件服务器.也就是说,我们在Nginx上可以发布网站,可以实现负载均衡(提高应答效率,避免服务器崩溃),还可以作为邮件服务器实现收发邮件等功能.而最常见的就是使用Nginx实现负载均衡. Nginx与其他服务器的性能比较: Tomcat服务器面向Java语言,是重量级的服务器,而N

NGINX 实现反向代理负载均衡服务器

一.nginx负载均衡与反选代理的区别? 答:我觉得没什么区别,一台就叫反向代理,多台就叫负载均衡,它们相结合使用 二.nginx 负载均衡原理 三.配置nginx负载均衡 修改nginx.conf http {     include       mime.types;     default_type  application/octet-stream;     sendfile        on;     keepalive_timeout  65;     upstream backe

Nginx的反向代理 负载均衡 配置

在ubuntu下安装Nginx: sudo apt install nginx nginx的配置文件有两个: /etc/nginx/nginx.conf /etc/nginx/sites-enabled/default 在server块中增加配置,设置反向代理: server{ listen 9001; server_name 127.0.0.1; location ~ /edu/ { proxy_pass http://127.0.0.1:8080; } location ~ /vod/ {

nginx ----> nginx配置/反向代理/负载均衡

1 server { 2 listen 80; 3 server_name localhost; 4 5 location / { 6 #将请求与我们定义的服务器进行映射 7 proxy_pass http://localhost:8080/loginForm; //分号不能少 8 #root html; 9 #index index.html index.htm; 10 } 11 12 error_page 500 502 503 504 /50x.html; 13 location = /5

nginx+tomcat 反向代理 负载均衡配置

1.nginx的安装和配置见:http://www.cnblogs.com/ll409546297/p/6795362.html 2.tomcat部署项目到对应的服务器上面并启动,不详解 3.在nginx中配置nginx.conf文件: user nobody; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid