Nginx HTTP 负载均衡和反向代理

1.负载均衡和反向代理介绍

负载均衡是多台服务器对称方式组成一个服务器的集合,每个服务器都能单独对外提供服务,通过负载均衡技术,将客户端请求均匀的分配到服务器集合中的某个服务器上,然后服务器独立响应客户端的请求,这样解决了高并发的访问。

反向代理是指以代理服务器接受用户请求,然后将请求,转发给内部网络上的服务器,并将从服务器上得到的结果返回给用户,这时代理服务器对外表现为一个服务器,代理服务器上没有保存任何的网页数据,所有的静态网页和CGI程序都保存在内部网络上的web服务器上,增加了web服务的安全性。

2.常见的负载均衡方法

2.1用户手动选择,在下载业务的网站中常见。

2.2DNS轮询,一个域名,可以解析到多个服务器。但是可靠性不高,一旦某个服务器宕机,解析到此服务器的请求就不能响应,而且DNS缓存时间比较长,即使去掉DNS中服务器解析也不能立即生效,另外一个问题负载不均衡,因为不能反映各个服务器的运行情况和性能,同时DNS缓存又使解析都到了同一个服务器上。

2.3四/七层负载均衡

这个四七层指的是OSI标准的网络模型,四层是传输层,七层是应用层。

四层负载均衡可以使用硬件实现如:F5 BIG-IP、Citrix NetScaler等,价格不菲。不过也可以使用软件的方式实现,代表是国人章文嵩博士研发的LVS。

七层负载均衡大体使用HTTP反向代理方式,代表是Nginx、HAProxy等,这里主要说下Nginx,因为它能很好配置,同时可以按轮询,IPHash、权重、URLHash等方式实现负载均衡,也能检查后端服务器的健康状态。

3.一个nginx反向代理服务器的大体配置

user  nginx nginx;
worker_processes  1; #一般与CPU数量相等

error_log  /var/log/nginx/error.log crit; #错误日志记录路径,错误类型crit:记录最少错误
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        /var/run/nginx.pid; #主进程号位置
worker_rlimit_nofile 51200;  #打开最多文件数

events {
    use epoll;    #使用的IO模型,这里是事件触发型
    worker_connections  51200;   #最大连接数
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    server_names_hash_bucket_size 128; #内存中缓存服务器名的hash表大小
    client_header_buffer_size 32k;   #用户头信息的缓冲大小,如果用户cookie大就设定大点
    large_client_header_buffers 4 32k;  #缓冲头信息的数量,和大小

    #log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
    #                  ‘$status $body_bytes_sent "$http_referer" ‘
    #                  ‘"$http_user_agent" "$http_x_forwarded_for"‘;

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay on; #禁用nagle算法,这个算法不适用与C/S的情况
    fastcgi_connect_timeout 300; #fastcgi进程连接超时时长
    fastcgi_send_timeout 300;    #发送超时时长
    fastcgi_read_timeout 300;    #响应超时时长
    fastcgi_buffer_size 64k;     #缓冲头大小
    fastcgi_buffers 4 64k;       #缓冲数量和大小,一般是站点中php/java脚本所产生页面大小中间值
    fastcgi_busy_buffers_size 128k;  #默认fastcgi_buffer_size两倍
    fastcgi_temp_file_write_size 128k; #缓存临时文件的大小默认fastcgi_buffer_size两倍

    gzip on;
    gzip_min_lenth 1k;  #最少压缩的数据大小
    gzip_buffers 4 16k;  #缓冲大小
    gzip_http_version 1.1;  #版本
    gzip_comp_level 2;   #压缩比
    gzip_types     text/plain application/x-javascript   text/css   application/xml;   #压缩文件mime类型
    gzip_vary on;   #head头上加vary头,判断代理服务器是否支持压缩

    client_max_body_size 300m;   #最大请求单个文件大小
    client_body_buffer_size  128k;  #请求缓冲区大小
    proxy_connect_timeout 600;    #连接超时时间
    proxy_read_timeout  600;    #连接后响应超时时间
    proxy_send_timeout  600;   #连接后传送数据超时时间
    proxy_buffer_size  16k;       #缓冲大小
    proxy_buffers  4  32k;     #缓冲大小和数量
    proxy_busy_buffers_size 64k;     #系统繁忙时,缓冲申请的最大空间
    proxy_temp_file_write_size  64k;   #临时文件缓存大小

    upstream php_server_pool {
     server 192.168.226.131:80 max_fails=2 fail_timeout=30s;   #定义服务器组
      server 192.168.226.132:80 max_fails=2 fail_timeout=30s;
     ip_hash;   #解决session绑定问题,但是负载均衡效果一般。
    }

    server  {
    listen 80;
    server_name www.shiyan.com;
    location /  {
        proxy_next_upstream http_502 http_504 timeout invalid_header;   #响应码为多少时,请求发往另外的服务器
         proxy_pass  http://php_server_pool;   #服务器组
         proxy_set_header Host www.shiyan.com;    #访问的域名
         proxy_set_header X-Forwarded-For $remote_addr;   #访问经过的代理服务器,和客户端的真是IP
    }
    access_log /var/log/nginx/www.shiyan.com_access.log;
   }

当然通过upstream指令和server指令完全可以实现反向代理的动静网页分离,通过定义location的请求文件格式,去访问静态缓存服务器和不同的服务器组,上文没有多说这方面。

4.Nginx负载均衡的HTTP Upstream模块

4.1   ip——hash指令

后端是多个动态应用服务器时,能够将一个客户端的请求定义到同一台服务器上,能解决session问题,但是这样权重等方法失去效果,负载均衡不好,能session共享来替换它。

4.2  server指令

主要是后端服务器的名称,参数,名称可以是域名,ip端口。参数weigth权重,max_fails对后端服务器请求失败次数,fail_timeout请求失败后超时时间,down标记服务器永久离线,backup标记服务器在非backup服务器全部宕机或者都繁忙时启用。

4.3 upstream指令

定义服务器组,变量:$upstream_addr 请求的upstream服务器ip, $upstream_status服务器的应答状态,$upstream_response_time响应时间,$upstream_http_$HEADER 任意的HTTP协议头信息。

时间: 2024-10-28 14:37:02

Nginx HTTP 负载均衡和反向代理的相关文章

Nginx HTTP负载均衡和反向代理配置

当前大并发的网站基本都采用了Nginx来做代理服务器,并且做缓存,来扛住大并发.先前也用nginx配置过简单的代理,今天有时间把整合过程拿出来和大家分享,不过其中大部分也是网上找来的资源. nginx完整的反向代理代码如下所示  : [[email protected] conf]# vim nginx.conf user  www www; worker_processes  10; error_log  /var/log/nginx/nginx_error.log; pid        l

Nginx+Tomcat负载均衡群集+反向代理

实验环境 Nginx服务器(192.168.13.177) Tomcat1服务器(192.168.13.151) Tomcat2服务器 (192.168.13.178) client测试机 一,负载均衡 1,在Tomcat1,Tomcat2上安装Tomcat服务 [[email protected] ~]# systemctl stop firewalld.service ##关闭防火墙 [[email protected] ~]# mkdir /abc [[email protected] ~

Nginx负载均衡及反向代理

Nginx 负载均衡 什么是nginx负载均衡? Nginx作为一个强大的web服务器管理软件,自身带有负载均衡和反向代理的功能,那么他和lvs之间有什么区别呢? LVS负载:是基于4层的负载均衡, 优点: 1抗负载能力强 2配置性低 3工作稳定 4无流量 5基本支持所有应用负载均衡,如WEB,数据库 Nginx负载:基于7层的负载均衡 特点: 1nginx工作在网络7层,他可以针对http本身做分发策略,如域名,目录结构等 2nginx对网络依赖小 3配置简单,测试方便 4nginx同样能承受

Nginx负载均衡,反向代理,再从防火墙做转发后,css样式与端口丢失!

Nginx负载均衡,反向代理,再从防火墙做转发后,报错,用外网IP+端口访问,结果css样式与端口都丢失!!!!!内网IP+端口访问,正常! 解决思路:用chrome的network标签,分析项目的路径与端口!将配置文件中无用的干掉! 亲测改好的配置文件,注意注释信息!!!! vi conf/nginx.conf worker_processes  auto; worker_rlimit_nofile 10000; events {     worker_connections  2048;  

CentOS中实现Nginx负载均衡和反向代理

一.安装必要软件 负载均衡服务器:IP设置为192.168.1.10 Web服务器1:安装Apache或者Nginx,IP设置为192.168.1.11: Web服务器2:安装Apache或者Nginx,IP设置为192.168.1.12. 二.配置负载均衡服务器 1.在Nginx的conf目录下新建extra文件夹,并在其下边编辑生成一个配置文件,比如t_servers.conf upstream test_servers { server 192.168.1.11:80 weight=5;

nginx全面解析【负载均衡、反向代理、高可用、宕机容错】

nginx全面解析[负载均衡.反向代理.高可用.宕机容错]原创itcats_cn 最后发布于2018-09-06 10:24:33 阅读数 15799 收藏展开什么是nginx?nginx是一款高性能的http服务器,官方测试nginx能够支支撑5万并发链接,并且cpu.内存等资源消耗却非常低,运行非常稳定,所以现在很多知名的公司都在使用nginx. nginx有什么作用?1.负载均衡(可以减轻单台服务器的压力) 2.反向代理(隐藏企业真实的ip地址) 3.搭建虚拟服务器 4.用做静态服务器(实

Nginx负载均衡与反向代理的配置和优化

什么是负载均衡和反向代理? 随着网站访问量的快速增长,单台服务器已经无法承担大量用户的并发访问,必须采用多台服务器协同工作,以提高计算机系统的处理能力和计算强度,满足当前业务量的需求.而如何在完成同样的功能的多个网络设备之间实现合理的业务量的分配,使之不会出现一台设备过忙.而其他的设备却没有充分使用的情况.要解决这一问题,可以采用负载均衡的方法. 负载均衡: 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助.通过负载均

每天进步一点点——负载均衡之反向代理

转载请说明出处:http://blog.csdn.net/cywosp/article/details/38026809 反向代理(Reverse Proxy)方式是指以代理server来接受internet上的连接请求,然后将请求转发给内部网络上的server,并将从server上得到的结果返回给internet上请求连接的client,此时代理server对外就表现为一个server,该server就可称之为代理server.因为代理server处在终于处理请求訪问的server之前,因此能

(转)ubuntu apache2 的负载均衡和反向代理

apache功能其实很是强大,最近一段时间研究了下apache的反向代理和负载均衡,反向代理网协的外网出口和我的博客出口就是通过apache的反向代理实现的,总结一下,重点说说负载均衡的配置. 首先说先实验环境吧 操作系统:DEBIAN 5.03(Ubuntu也可以同理配置) 一.安装apache加载模块 apt-get install apache2然后进入到apache的配置目录cd /etc/apache2apache的反向代理和负载均衡其实利用的都是反向代理的原理,至于什么叫做反向代理可