基础笔记之,nginx负载均衡配置

By admin in 美高梅手机版4858 on 2019年4月22日

nginx消除方案

nginx化解方案

nginx负载均衡配置

1. Nginx安装 (Ubuntu)

apt-get install nginx

一.方案场景

幸存多台应用服务器,要得以完结全部的走访先拜访到反向代理服务器上再转内部对应的接纳。

反向代理(Reverse
Proxy)方式是指以代理服务器来经受internet上的连年请求,然后将请求转载给内部互连网上的服务器,并将从服务器上获得的结果重回给internet上呼吁连接的客户端,此时期理服务器对外就显现为三个反向代理服务器。简单的讲正是隐蔽全体的服务器,与之相对的是正向代理,如小编辈常用的vpn,目标是隐身访问客户端。

笔者们在那边筹算选取Nginx作为方向代理的服务器

1.方案场景

幸存多台应用服务器,要兑现全数的拜访先走访到反向代理服务器上再转内部对应的运用。

反向代理(Reverse
Proxy)情势是指以代理服务器来接受internet上的总是请求,然后将请求转载给内部网络上的服务器,并将从服务器上收获的结果重返给internet上呼吁连接的客户端,此时代理服务器对外就显示为叁个反向代理服务器。简单来说就是潜伏全体的服务器,与之相对的是正向代理,如作者辈常用的vpn,目的是隐身访问客户端。

我们在此间打算选择Nginx作为方向代理的服务器

配置遭受

地点配置三台docker容器分别命名叫web一、web贰、和Qd(前端机),web一、web二担负web服务器,Qd肩负前端理事均前端机担当分发请求。

美高梅手机版4858 1

拓扑图

贰. 常用命令

[安装路径]/nginx # 启动
[安装路径]/nginx -s reload #平滑重启
[安装路径]/nginx -s stop # 停止 Nginx

2.什么是nginx

Nginx(“engine x”)是壹款是由俄罗丝的顺序设计员伊戈尔 Sysoev开采高品质的
Web和 反向代理 服务器,也是贰个 IMAP/POP3/SMTP 代理服务器。
在高连接出现的意况下,Nginx是Apache服务器不错的代替品。

2.什么是nginx

Nginx(“engine x”)是一款是由俄罗斯的次序设计员伊戈尔 Sysoev开垦高性能的
Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
在高连接出现的意况下,Nginx是Apache服务器不错的代替品。

反向代理配置

修改nginx配置文件

美高梅手机版4858 2

配备文件

安排文件中的web1为host名,已加多到host中

location / {
      proxy_pass      http://web1; // 代理地址
       }

评释nginx配置文件是还是不是科学

root@0334777e7f92:/etc/nginx/conf.d# nginx -t

再也加载nginx配置文件

root@0334777e7f92:/etc/nginx/conf.d# service nginx reload

走访Qd机的nginx服务,将被跳转到web1服务器上

3. nginx.conf 配置

nginx.conf 结构如下:

{
    main
    events {}
    http {
            main
            server {
                main
                location {}
               }
            upstream myproject {}
      }
}

nginx配置文件重大分为五个区域:
main(全局设置): 包含 Events 和 HTTP;
events(nginx工作模式): 承接main,重要用于钦定主机和端口,设置网址;
http(http设置): HTTP 包含 upstream 和多个 Server;
sever(主机设置): Server 又带有多少个 location ;
location(URL匹配): 继承server,用于相配网页的门道;
upstream(负载均衡服务器设置):
首要用以负载均衡,既不会持续别的装置也不会被接二连三。

3.nginx安装

在/usr/local/src下开始展览,不然前边会编写翻译错误

3.nginx安装

在/usr/local/src下进展,不然前边会编写翻译错误

布局管事人均

在反向代理的基础上开始展览负荷均衡布局,增添upstream模块

upstream test.net{
    ip_hash; ## 调度算法
    server 192.168.10.13:80; 服务列表
    server 192.168.10.14:80  down;
    server 192.168.10.15:8009  max_fails=3      fail_timeout=20s;
    server 192.168.10.16:8080;
}
  • upstream 协理的负载均衡算法

Nginx的负荷均衡模块近期支持四种调治算法,下边进行分级介绍,在这之中后两项属于第一方调解算法。

轮询(暗许)。每一种请求定期间顺序依次分配到不一致的后端服务器,假使后端某台服务器宕机,故障系统被自动删除,使用户访问不受影响。

Weight
内定轮询权值,Weight值越大,分配到的拜访机率越高,首要用今后端每种服务器质量不均的状态下。

ip_hash。每一个请求按访问IP的hash结果分配,那样来自同二个IP的访客固定访问一个后端服务器,有效化解了动态网页存在的session共享难题。

fair。那是比上边多少个特别智能的载重均衡算法。此种算法能够依附页面大小和加载时间长度智能地举行负荷均衡,约等于遵照后端服务器的响应时间来分配请求,响应时间短的优分。Nginx本人是不帮忙fair的,假使要求使用那种调解算法,必须下载Nginx的upstream_fair模块。

url_hash。此办法按访问url的hash结果来分配请求,使各类url定向到同二个后端服务器,能够进一步提升后端缓存服务器的频率。Nginx自个儿是不协理url_hash的,假如急需选择那种调整算法,必须安装Nginx
的hash软件包。

  • upstream 帮助的状态参数

在HTTP
Upstream模块中,能够透过server指令钦定后端服务器的IP地址和端口,同时还足以设定每一个后端服务器在负载均衡调节中的状态。常用的情状有:

down,表示近期的server暂且不插足负载均衡。
backup,预留的备份机器。当别的兼具的非backup机器出现故障恐怕忙的时候,才会呈请backup机器,因而那台机械的压力最轻。
max_fails,允许请求失利的次数,默以为一。当超越最大次数时,重返proxy_next_upstream
模块定义的谬误。
fail_timeout,在经验了max_fails次倒闭后,暂停服务的时光。max_fails可以和fail_timeout一同使用。

注,当负载调治算法为ip_hash时,后端服务器在负载均衡调整中的状态不能够是weight和backup。

  • 布署负载均衡

root@0334777e7f92:/etc/nginx/conf.d# vim default.conf
upstream webservers {
      server web1;
      server web2;
  }
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
       # root   /usr/share/nginx/html;
       # index  index.html index.htm;
        proxy_pass      http://webservers;
        proxy_set_header  X-Real-IP  $remote_addr;
    }

美高梅手机版4858 3

负载均衡布局

基础笔记之,nginx负载均衡配置。表达nginx配置文件是或不是准确

root@0334777e7f92:/etc/nginx/conf.d# nginx -t

再度加载nginx配置文件

root@0334777e7f92:/etc/nginx/conf.d# service nginx reload

走访Qd机,刷新页面,将会轮流培训分不到任何服务机上

main 模块

main 模块钦命全局的装置:

# user 来指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。
user nobody nobody;

# worker_processes来指定了Nginx要开启的子进程数。
# 一般指定1个进程,如果是多核CPU,建议指定和CPU的数量一样的进程数。
worker_processes 1;

# error_log用来定义全局错误日志文件。
# 日志输出级别有debug、info、notice、warn、error、crit可供选择。
error_log  /usr/local/var/log/nginx/error.log  notice;

# pid用来指定进程id的存储文件位置。
pid        /usr/local/var/run/nginx/nginx.pid;

# worker_rlimit_nofile用于指定一个nginx进程可以打开的最多文件描述符数目。
# 需要使用命令“ulimit -n [number]”来设置(保持一致)。
worker_rlimit_nofile 1024;

  1. 用户和用户组的概念
  2. 多核CPU
  3. pid
  4. Too Many Open Files
    错误

3.一 安装编译工具和库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

3.一 安装编写翻译工具和库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

events 模块

events模钦赐专门的职业格局和连接数上限

events {
    # use用来指定Nginx的工作模式。
    # use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; 
    # select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式。
    # epoll用在Linux平台上,而kqueue用在BSD系统中
    use epoll; 

    # worker_connections用于定义Nginx每个进程的最大连接数,即接收的最大请求数。
    # 最大客户端连接数=连接数*进程数
    # Max_clients=worker_processes*worker_connections
    # 反向代理时,Max_clients = worker_processes * worker_connections/4。 
    # 系统进程最大打开文件数限制,需要使用命令ulimit -n 
    worker_connections  1024;
}

3.2 安装PCRE

PCRE 效能是让 Nginx 协助 Rewrite 作用。
下载 PCRE 安装包,下载地址:
http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

解压安装包

tar zxvf pcre-8.35.tar.gz

跻身安装包目录

cd pcre-8.35

编写翻译安装

./configure
make && make install

查看pcre版本

 pcre-config --version

若有版本显得,注解安装成功

3.2 安装PCRE

PCRE 成效是让 Nginx 匡助 Rewrite 功用。
下载 PCRE 安装包,下载地址:
http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

解压安装包

tar zxvf pcre-8.35.tar.gz

进去安装包目录

cd pcre-8.35

编写翻译安装

./configure
make && make install

查看pcre版本

 pcre-config --version

若有版本显得,申明安装成功

http 模块

http 模块肩负HTTP服务器相关属性的铺排。

http{
    # include 来用设定文件的mime类型
    # 将配置文件拆分并引用,减少主配置文件的复杂度。
    # 类型在配置文件目录下的mime.type文件定义
    include mime.types;

    # default_type 设定默认类型为二进制流。
    # 例如在没有配置PHP环境时,用浏览器访问PHP文件就会不予解析,出现下载窗口, 
    default_type  application/octet-stream;

    # log_format用于设置日志的格式和记录哪些参数。
    # 这里设置为main。
    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 用来纪录每次的访问日志的文件地址。
    # 后面的main是日志的格式样式,对应于log_format的main。
    access_log  /usr/local/var/log/nginx/access.log  main;

    # sendfile参数用于开启高效文件传输模式。
    # 对于普通应用设为 on。
    # 对于用来进行下载等应用磁盘IO重负载应用,可设置为off,
    # 平衡磁盘与网络I/O处理速度,降低系统的负载。
    # 注:图片显示不正常,改 off
    sendfile        on;

    # 将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞。
    tcp_nopush      on;
    tcp_nodelay     on;

    # keepalive_timeout设置客户端连接保持活动的超时时间。
    # 在超过这个时间之后,服务器会关闭该连接。
    keepalive_timeout  10;

    upstream myproject {}
    server {}
}

3.3 安装Nginx

下载 Nginx,下载地址:

wget http://nginx.org/download/nginx-1.6.2.tar.gz

解压安装包

tar zxvf nginx-1.6.2.tar.gz

进去安装包目录

 cd nginx-1.6.2

编译安装

./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
make
make isntall

注意,编写翻译安装的路子要安份守己实际安装的路线来,这一次是在/usr/local/src下

查看nginx版本

/usr/local/webserver/nginx/sbin/nginx -v

若有版本显得,表明安装成功

3.3 安装Nginx

下载 Nginx,下载地址:

wget http://nginx.org/download/nginx-1.6.2.tar.gz

解压安装包

tar zxvf nginx-1.6.2.tar.gz

跻身安装包目录

 cd nginx-1.6.2

编写翻译安装

./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
make
make isntall

留神,编写翻译安装的路线要依据实际安装的渠道来,本次是在/usr/local/src下

查看nginx版本

/usr/local/webserver/nginx/sbin/nginx -v

若有版本显得,证明安装成功

server 模块

server 模块配置虚拟主机

server {
        # listen指定监听端口
        listen 8080;

        # server_name用来指定IP地址或者域名,多个域名之间用空格分开。
        server_name  localhost  www.test.com;

        # root 表示在这整个server虚拟主机内,全部的root web根目录。        
        # 注意和locate {}下的定义区分开来。
        root /Users/yangyi/www;

        # index 全局定义访问的默认首页地址。
        # 注意和locate {}下的定义区分开来。
        index  index.php index.html index.htm; 

        # charset用于设置网页的默认编码格式。 
        charset utf-8;

        # 虚拟主机的日志存放
        access_log  usr/local/var/log/host.access.log  main;
        aerror_log  usr/local/var/log/host.error.log  error;

        location {}
}

4.nginx的配置

nginx的布置文件在/usr/local/webserver/nginx/conf/nginx.conf下,我们只要修改nginx.conf的内容就可以修改Nginx的铺排

布置文件的格式如下

main # 全局设置
events { # Nginx工作模式
    ....
}
http { # http设置
    ....
    upstream myproject { # 负载均衡服务器设置
        .....
    }
    server  { # 主机设置
        ....
        location { # URL匹配
            ....
        }
    }
    server  {
        ....
        location {
            ....
        }
    }
    ....
}

4.nginx的配置

nginx的布署文件在/usr/local/webserver/nginx/conf/nginx.conf下,我们假如修改nginx.conf的内容就能够修改Nginx的布局

布署文件的格式如下

main # 全局设置
events { # Nginx工作模式
    ....
}
http { # http设置
    ....
    upstream myproject { # 负载均衡服务器设置
        .....
    }
    server  { # 主机设置
        ....
        location { # URL匹配
            ....
        }
    }
    server  {
        ....
        location {
            ....
        }
    }
    ....
}

location 模块

location 模块用来定位。

# location /表示匹配访问根目录。
location / {

            # root指令用于指定访问根目录时,虚拟主机的web目录。
            # 这个目录可以是相对路径(相对路径是相对于nginx的安装目录)。
            # 也可以是绝对路径。
            root   /Users/yangyi/www;

            # index用于设定我们只输入域名后访问的默认首页地址。
            # 有个先后顺序:index.php index.html index.htm。
            # 如果没有开启目录浏览权限,又找不到这些默认首页,就会报403错误。
            index  index.php index.html index.htm;
        }

location
还有1种格局正是正则匹配,开启正则相称那样:location ~。后边加个~

4.1 main模块

main区域是八个大局设置

#user 来指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。
user  nobody;
#指定了Nginx要开启的子进程数。每个Nginx进程平均耗费10M~12M内存。根据经验,一般指定1个进程就足够了,如果是多核CPU,建议指定和CPU的数量一样的进程数即可。我这里写2,那么就会开启2个子进程,总共3个进程。
worker_processes  1;

#error_log 来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
#pid 来指定进程id的存储文件位置。
pid        logs/nginx.pid;

4.1 main模块

main区域是三个大局设置

#user 来指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。
user  nobody;
#指定了Nginx要开启的子进程数。每个Nginx进程平均耗费10M~12M内存。根据经验,一般指定1个进程就足够了,如果是多核CPU,建议指定和CPU的数量一样的进程数即可。我这里写2,那么就会开启2个子进程,总共3个进程。
worker_processes  1;

#error_log 来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
#pid 来指定进程id的存储文件位置。
pid        logs/nginx.pid;

upstram 模块

upstream
模块负债负载均衡模块,通过叁个轻松易行的调治算法来落成客户端IP到后端服务器的载荷均衡。

# upstream指令指定了一个负载均衡器的名称test_example.com
upstream test_example.com{

    # ip_hash这是一种负载均衡调度算法
    ip_hash;
    server 192.168.12.1:80;
    server 192.168.12.2:80 down;
    server 192.168.12.3:8080  max_fails=3  fail_timeout=20s;
    server 192.168.12.4:8080;
}


Nginx的负载均衡模块近年来支撑四种调度算法:

  1. weight
    轮询(暗中同意)。各样请求定期间顺序依次分配到分歧的后端服务器,假使后端某台服务器宕机,故障系统被活动删除,使用户访问不受影响。weight。钦点轮询权值,weight值越大,分配到的拜访机率越高,主要用于后端每一种服务器品质不均的景况下。
  2. ip_hash。每种请求按访问IP的hash结果分配,那样来自同3个IP的访客固定访问一个后端服务器,有效消除了动态网页存在的session共享难点。
  3. fair。比地方七个进一步智能的负荷均衡算法。此种算法可以根据页面大小和加载时间长短智能地开始展览负荷均衡,也就是依靠后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx自身是不帮助fair的,假诺须要利用那种调节算法,必须下载Nginx的upstream_fair模块。
  4. url_hash。按访问url的hash结果来分配请求,使各种url定向到同三个后端服务器,能够进一步升高后端缓存服务器的频率。Nginx自身是不协理url_hash的,如果急需选用那种调解算法,必须安装Nginx
    的hash软件包。

在HTTP
Upstream模块中,能够通过server指令钦定后端服务器的IP地址和端口,同时还足以设定每一种后端服务器在负载均衡调整中的状态。常用的景观有:

  • down,表示目前的server一时不参加负载均衡。
  • backup,预留的备份机器。当别的具有的非backup机器出现故障可能忙的时候,才会呈请backup机器,由此那台机械的压力最轻。
  • max_fails,允许请求失利的次数,默以为一。当赶上最大次数时,再次回到proxy_next_upstream
    模块定义的错误。
  • fail_timeout,在经历了max_fails次退步后,暂停服务的大运。max_fails可以和fail_timeout一齐利用。


当负载调节算法为ip_hash时,后端服务器在负载均衡调整中的状态不可能是weight和backup。

4.2 events模块

events模块来用钦命nginx的做事情势和劳作形式及连接数上限,一般是如此

events {
    use kqueue; #用来指定Nginx的工作模式
    #指定Nginx的单个进程的最大连接数,即接收到的前端的最大请求数,默认为1024
    worker_connections  1024;
}

4.2 events模块

events模块来用钦点nginx的干活形式和办事格局及连接数上限,一般是如此

events {
    use kqueue; #用来指定Nginx的工作模式
    #指定Nginx的单个进程的最大连接数,即接收到的前端的最大请求数,默认为1024
    worker_connections  1024;
}

其他

  • 访问调整 allow/deny

location /nginx-status {
  stub_status on;
  access_log off;
#  auth_basic   "NginxStatus";
#  auth_basic_user_file   /usr/local/nginx-1.6/htpasswd;

  allow 192.168.10.100;
  allow 172.29.73.0/24;
  deny all;
}
  • 模块http_proxy:
    其一模块达成的是nginx作为反向代理服务器的法力,包涵缓存成效

    • proxy_connect_timeout 60
      nginx跟后端服务器连接超时时间(代理连接超时)
    • proxy_read_timeout 60
      连天成功后,与后端服务器多少个成功的响应操作之间超时时间(代理接收超时)
    • proxy_buffer_size 4k
      安装代理服务器(nginx)从后端realserver读取并保留用户音讯的缓冲区大小,私下认可与proxy_buffers大小同等,其实能够将那个命令值设的小一些
    • proxy_buffers 4 32k
      proxy_buffers缓冲区,nginx针对单个连接缓存来自后端realserver的响应,网页平均在32k以下的话,那样设置
    • proxy_busy_buffers_size 64k
      高负荷下缓冲大小(proxy_buffers*2)
    • proxy_max_temp_file_size
      当proxy_buffers放不下后端服务器的响应内容时,会将一部分保留到硬盘的目前文件中,那么些值用来设置最大目前文件大小,暗中同意十2四M,它与proxy_cache未有关联。大于那几个值,将从upstream服务器传回。设置为0禁止使用。
    • proxy_temp_file_write_size 64k
      当缓存被代理的服务器响应到暂时文件时,那几个选项限制每一次写一时半刻文件的大小。proxy_temp_path(能够在编写翻译的时候)钦命写到哪那三个目录。
  • 模块http_gzip

    • gzip on : 开启gzip压缩输出,减弱互连网传输。
    • gzip_min_length 1k
      设置允许降价扣的页面最小字节数,页面字节数从header头得content-length中张开获取。暗中同意值是20。提出设置成大于一k的字节数,小于壹k也许会越压越大。
    • gzip_buffers 4 16k
      设置系统获得多少个单位的缓存用于存款和储蓄gzip的减弱结果数据流。4
      16k意味以1六k为单位,安装原始数据大小以16k为单位的4倍申请内部存款和储蓄器。
    • gzip_http_version 1.0 : 用于识别 http
      协议的版本,早期的浏览器不协理 Gzip
      压缩,用户就会师到乱码,所认为了援救早先时期版本加上了这几个选项,假若您用了
      Nginx 的反向代理并期望也启用 Gzip 压缩的话,由于前边通信是
      http/壹.0,故请设置为 一.0。
    • gzip_comp_level 6
      gzip压缩比,1减去比异常的小管理速度最快,9缩减比最大但管理速度最慢(传输快但比较消耗cpu)
    • gzip_types
      :相称mime类型举办压缩,无论是还是不是钦赐,”text/html”类型总是会被审核消减的。
    • gzip_proxied any
      Nginx作为反向代理的时候启用,决定张开可能关闭后端服务器重临的结果是不是减弱,相配的前提是后端服务器必须求赶回包蕴”Via”的
      header头。
    • gzip_vary on : 和http头有涉嫌,会在响应头加个 Vary:
      Accept-Encoding
      ,能够让前者的缓存服务器缓存经过gzip压缩的页面,比如,用Squid缓存经过Nginx压缩的多少。

  • error page

      // 定义各类错误页,指向错误页面 
      error_page 404 /404.html;
    
      // 指定错误页面 /50x.html
      error_page 500 502 503 504 /50x.html; 
      location = /50x.html { root html; }
    
      // @类似于变量定义 
      // error_page 403 这种定义不允许,所以利用@实现,指向其他网站        
      error_page 403 @page403; 
      location @page403 { proxy_pass http://http://www.baidu.com; }
    

4.3 http模块

http是Nginx的主干模块,它担任http服务器相关属性的计划,里面包车型大巴server和upstream子模块至关心器重要,大家在装置方向代理、负债均衡以及虚拟目录等的时候,正是借助于那三个模块的布署

http {
     #设定mime类型,类型由mime.type文件定义
    include       /etc/nginx/mime.types;
    #设定了默认的类型为二进制流,也就是当文件类型未定义时使用这种方式
    default_type  application/octet-stream;

    #用于设置日志的格式,和记录哪些参数,这里设置为main,刚好用于access_log来纪录这种类型。
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    #设定日志文件,后面的main是日志的格式样式,对应于log_format的main。
    access_log    /var/log/nginx/access.log main;

    #用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞。
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    #设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接。
    keepalive_timeout 10;

    #设定负载均衡的服务器列表
    upstream load_balance_server {
        ......
    }

   #HTTP服务器
   server {
       ......
    }
}

4.3 http模块

http是Nginx的主导模块,它担当http服务器相关属性的安顿,里面的server和upstream子模块至关首要,咱们在安装方向代理、负债均衡以及虚拟目录等的时候,正是借助于那多少个模块的配备

http {
     #设定mime类型,类型由mime.type文件定义
    include       /etc/nginx/mime.types;
    #设定了默认的类型为二进制流,也就是当文件类型未定义时使用这种方式
    default_type  application/octet-stream;

    #用于设置日志的格式,和记录哪些参数,这里设置为main,刚好用于access_log来纪录这种类型。
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    #设定日志文件,后面的main是日志的格式样式,对应于log_format的main。
    access_log    /var/log/nginx/access.log main;

    #用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞。
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    #设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接。
    keepalive_timeout 10;

    #设定负载均衡的服务器列表
    upstream load_balance_server {
        ......
    }

   #HTTP服务器
   server {
       ......
    }
}

4.3.1 upstream模块

upstream重要承负责载均衡,通过2个轻易的调解算法来兑现客户端IP到后端服务器的载重均衡。

upstream test.com{
    ip_hash;
    server 123.206.117.62:80;
    server 123.206.117.62:80 down;
    server 123.206.117.62:8080  max_fails=3  fail_timeout=20s;
    server 123.206.117.62:8080;
}
  • 地点的代码,test.com是upstream钦命的载重均衡器的名号,那么些名号能够轻便钦定,在后头供给的地点平昔调用就可以。

  • ip_hash那是当中的一种负载均衡调解算法,Nginx的载重均衡模块目前支撑4种调治算法:

    1. weight
      轮询(私下认可)。每一个请求按期间各类依次分配到不相同的后端服务器,借使后端某台服务器宕机,故障系统被活动删除,使用户访问不受影响。weight。钦定轮询权值,weight值越大,分配到的拜会机率越高,主要用来后端每一个服务器品质不均的状态下。

    2. ip_hash。每一个请求按访问IP的hash结果分配,那样来自同二个IP的访客固定访问2个后端服务器,有效缓慢解决了动态网页存在的session共享难点。

    3. fair(第贰方)。比上边四个进一步智能的载重均衡算法。此种算法能够依据页面大小和加载时长智能地开始展览负荷均衡,也正是基于后端服务器的响应时间来分配请求,响应时间短的先期分配。Nginx自己是不帮助fair的,若是须求采纳那种调节算法,必须下载Nginx的upstream_fair模块。

    4. url_hash(第一方)。按访问url的hash结果来分配请求,使每一个url定向到同三个后端服务器,能够进一步进步后端缓存服务器的频率。Nginx本身是不匡助url_hash的,即使必要选择那种调节算法,必须设置Nginx的hash软件包。

  • server钦赐的是种种服务器,包含服务器的ip、端口以及种种后端服务器在负载均衡中的状态,常用的景况有:
  1. down,表示目前的server一时不参加负载均衡。
  2. backup,预留的备份机器。当别的具备的非backup机器出现故障或然忙的时候,才会呈请backup机器,因而那台机械的压力最轻。
  3. max_fails,允许请求退步的次数,默感觉一。当超越最大次数时,重临proxy_next_upstream
    模块定义的失实。
  4. fail_timeout,在经验了max_fails次停业后,暂停服务的时辰。max_fails可以和fail_timeout一齐使用。

留意:当负载调整算法为ip_hash时,后端服务器在负载均衡调解中的状态不可能是weight和backup。其余情形能够是weight,表示负载的权重,默以为一,weight越大,权重越大。

4.3.1 upstream模块

upstream首要肩负负载均衡,通过3个简便的调节算法来落成客户端IP到后端服务器的负载均衡。

upstream test.com{
    ip_hash;
    server 123.206.117.62:80;
    server 123.206.117.62:80 down;
    server 123.206.117.62:8080  max_fails=3  fail_timeout=20s;
    server 123.206.117.62:8080;
}
  • 上边的代码,test.com是upstream钦赐的负载均衡器的称谓,那一个名称能够大4钦定,在前边须要的地点一贯调用就可以。

  • ip_hash那是里面包车型大巴1种负载均衡调节算法,Nginx的负荷均衡模块近日支撑4种调解算法:

    1. weight
      轮询(默许)。每一种请求按期间各种依次分配到不一样的后端服务器,假诺后端某台服务器宕机,故障系统被自动删除,使用户访问不受影响。weight。钦定轮询权值,weight值越大,分配到的拜访机率越高,主要用现在端种种服务器品质不均的景况下。

    2. ip_hash。每种请求按访问IP的hash结果分配,那样来自同四个IP的来访的客人固定访问1个后端服务器,有效消除了动态网页存在的session共享难题。

    3. fair(第二方)。比下边四个进一步智能的负载均衡算法。此种算法能够依照页面大小和加载时长智能地拓展负荷均衡,约等于依据后端服务器的响应时间来分配请求,响应时间短的预先分配。Nginx本人是不扶助fair的,就算须要使用那种调解算法,必须下载Nginx的upstream_fair模块。

    4. url_hash(第1方)。按访问url的hash结果来分配请求,使每一个url定向到同2个后端服务器,能够进一步进步后端缓存服务器的频率。Nginx本人是不扶助url_hash的,假诺需求使用这种调整算法,必须设置Nginx的hash软件包。

  • server内定的是各类服务器,包蕴服务器的ip、端口以及各类后端服务器在负载均衡中的状态,常用的动静有:
  1. down,表示方今的server暂时不插足负载均衡。
  2. backup,预留的备份机器。当其余兼具的非backup机器出现故障或然忙的时候,才会呈请backup机器,由此那台机械的压力最轻。
  3. max_fails,允许请求失利的次数,默以为一。当越过最大次数时,再次来到proxy_next_upstream
    模块定义的荒谬。
  4. fail_timeout,在经验了max_fails次倒闭后,暂停服务的时光。max_fails可以和fail_timeout一同利用。

只顾:当负载调治算法为ip_hash时,后端服务器在负载均衡调治中的状态无法是weight和backup。别的情况能够是weight,表示负载的权重,默以为一,weight越大,权重越大。

4.3.2 server模块

server模块是http的子模块,它用来定1个虚拟主机,它的着力配置如下

server {
    #指定虚拟主机的服务端口
    listen 8080;
    #用来指定IP地址或者域名,多个域名之间用空格分开。
    server_name localhost 123.206.117.62 www.test.com;
    # 全局定义,如果都是这一个目录,这样定义最简单。
    root   /Users/marscheng/www; #示在这整个server虚拟主机内,全部的root web根目录。注意要和locate {}下面定义的区分开来。
    index  index.php index.html index.htm; #全局定义访问的默认首页地址。注意要和locate {}下面定义的区分开来。
    charset utf-8;#网页的默认编码格式
    #用来指定此虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式
    access_log  usr/local/var/log/host.access.log  main;
    #错误日志文件
    error_log  usr/local/var/log/host.error.log  error;
    #用于定位的配置
    location / {
          ....  
        }

}

4.3.2 server模块

server模块是http的子模块,它用来定三个虚拟主机,它的主干配置如下

server {
    #指定虚拟主机的服务端口
    listen 8080;
    #用来指定IP地址或者域名,多个域名之间用空格分开。
    server_name localhost 123.206.117.62 www.test.com;
    # 全局定义,如果都是这一个目录,这样定义最简单。
    root   /Users/marscheng/www; #示在这整个server虚拟主机内,全部的root web根目录。注意要和locate {}下面定义的区分开来。
    index  index.php index.html index.htm; #全局定义访问的默认首页地址。注意要和locate {}下面定义的区分开来。
    charset utf-8;#网页的默认编码格式
    #用来指定此虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式
    access_log  usr/local/var/log/host.access.log  main;
    #错误日志文件
    error_log  usr/local/var/log/host.error.log  error;
    #用于定位的配置
    location / {
          ....  
        }

}

location模块

location模块一般是在server中定义的,它在Nginx中用的最多,无论是负载均衡、反向代理依旧虚构域名,都跟它的布局有关。

location是用来牢固,解析url,定位ULacrosseL,所以,它也提供了有力的正则相称成效,也支撑标准判定相配,用户能够因而location指令已毕Nginx对动态、静态网页实行过滤管理。

  1. 设定暗中同意首页和虚拟机目录

location / {
  #指令用于指定访问根目录时,虚拟主机的web目录,这个目录可以是相对路径(相对路径是相对于nginx的安装目录)。也可以是绝对路径。
  root   /Users/marscheng/www;
  #用于设定我们只输入域名后访问的默认首页地址,有个先后顺序:index.php index.html index.htm,如果没有开启目录浏览权限,又找不到这些默认首页,就会报403错误。
  index  index.jsp index.html index.htm;
}
  1. 用正则表明式相称

location ~ \.html$ { #匹配.html结尾的URL,用来解析html文件。里面的root也是一样,用来表示虚拟主机的根目录。
  root           /Users/marscheng/www;
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.html;
  include        fastcgi.conf;
}

此地只是简要介绍,详细的布置能够参考那篇作品:

网络还有1篇介绍Nginx相比好的,作品,地址如下:

location模块

location模块一般是在server中定义的,它在Nginx中用的最多,无论是负载均衡、反向代理依旧虚构域名,都跟它的配置有关。

location是用来定位,解析url,定位U瑞虎L,所以,它也提供了强硬的正则相称功用,也支持条件决断相称,用户能够经过location指令达成Nginx对动态、静态网页进行过滤管理。

  1. 设定暗中同意首页和虚拟机目录

location / {
  #指令用于指定访问根目录时,虚拟主机的web目录,这个目录可以是相对路径(相对路径是相对于nginx的安装目录)。也可以是绝对路径。
  root   /Users/marscheng/www;
  #用于设定我们只输入域名后访问的默认首页地址,有个先后顺序:index.php index.html index.htm,如果没有开启目录浏览权限,又找不到这些默认首页,就会报403错误。
  index  index.jsp index.html index.htm;
}
  1. 用正则表明式相配

location ~ \.html$ { #匹配.html结尾的URL,用来解析html文件。里面的root也是一样,用来表示虚拟主机的根目录。
  root           /Users/marscheng/www;
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.html;
  include        fastcgi.conf;
}

此地只是简要介绍,详细的铺排能够参照那篇作品:

网络还有1篇介绍Nginx相比好的,小说,地址如下:

美高梅手机版4858,伍.方案设计

依照气象设计了如下的安顿方案:

http {
    #此处省略一些基本配置

    upstream product_server{
        server 9.236.2.35:8081;
    }

    upstream admin_server{
        server 9.236.2.36:8082;
    }

    upstream finance_server{
        server 9.236.2.37:8083;
    }

    server {
        #此处省略一些基本配置
        #根据不同正则匹配默认指向不同的的server
        location / {
            proxy_pass http://product_server;
        }

        location /product/{
            proxy_pass http://product_server;
        }

        location /admin/ {
            proxy_pass http://admin_server;
        }

        location /finance/ {
            proxy_pass http://finance_server;
        }
    }
}

伍.方案设计

遵照气象设计了如下的布置方案:

http {
    #此处省略一些基本配置

    upstream product_server{
        server 9.236.2.35:8081;
    }

    upstream admin_server{
        server 9.236.2.36:8082;
    }

    upstream finance_server{
        server 9.236.2.37:8083;
    }

    server {
        #此处省略一些基本配置
        #根据不同正则匹配默认指向不同的的server
        location / {
            proxy_pass http://product_server;
        }

        location /product/{
            proxy_pass http://product_server;
        }

        location /admin/ {
            proxy_pass http://admin_server;
        }

        location /finance/ {
            proxy_pass http://finance_server;
        }
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有