阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx基础应用详解

130次阅读
没有评论

共计 13935 个字符,预计需要花费 35 分钟才能阅读完成。

Nginx 是一款轻量级的 Web 和反向代理服务器,它的诞生主要是为了解决 C10K 的问题,它具有较多的特性;
Nginx 的特性:

 1、模块化设计,具有较好的扩展性
 2、具有高可靠性
 3、支持热部署:可以在不影响用户使用的情况下,升级老版本;可以不停机更新配置文件、更换日志文件、更换服务器程序版本
 4、低消耗内存:10K 个 keepalive 连接模式下的非活动连接仅消耗 2.5M 内存
 5、是 event-driven 事件驱动模型:具有一个主进程,多个子进程,每个子进程响应多个请求
 
Nginx 的基本功能:
 1、静态资源的 web 服务器
 2、可以作为 http 协议的正反向代理服务器
正向代理:Nginx 作为服务器,可直接响应资源给客户端
反向代理:Nginx 作为代理器,客户端不直接和服务器交流,而是通过和代理服务器的代理器来交流;通过代理器来读取服务器中的资源,从而响应给客户端
 3、支持 pop3/imap4 协议反向代理服务器
 4、支持 FastCGI、UWSGI 等
 5、支持模块化:例如 ssl、zip

Nginx 的程序架构图:

Nginx 基础应用详解

Master:Master 为主进程,主要作用是加载配置文件、管理 worker 进程、可进行平滑升级
Worker:worker 为子进程,由 master 主进程生成,一个 worker 进程可以处理多个客户端请求;主要作用是接受客户端请求、http 代理、FastCGI 代理、Memcache 代理、在磁盘内缓存以及管理磁盘内的缓存

准备环境:

虚拟机 1:nginxIP:172.18.42.200
虚拟机 2:httpd(后端主机)IP:172.18.42.201
虚拟机 3:httpd(后端主机)IP:172.18.42.202

一、实现“ngx_http_auth_basic_module”认证机制
1、虚拟机 1 安装 nginx 服务
[root@node0 ~]# yum install nginx

2、编辑 nginx 主配置文件
[root@node0 ~]# vim /etc/nginx/nginx.conf  ##nginx 的主配置文件
server {
listen 80;  ## 监听的端口
server_name localhost;
root /www/lweim/;  ## 指定读取资源路径
location /nginx {
  auth_basic “Show your Information”;  ## 指定提示页
  auth_basic_user_file /etc/nginx/.ngxpasswd;  ## 指定密码文件路径
}
}
[root@node0 nginx]# htpasswd -c -m /etc/nginx/.ngxpasswd lweim  ## 创建虚拟用户“lweim”
-c:当.nginxpasswd 这个文件不存在时需使用
-m:使用 md5 算法
[root@node0 ~]# echo “172.18.42.200 Nginx 1” > /www/lweim/nginx/index.html

3、访问 web 页面

Nginx 基础应用详解

二、实现“ngx_http_stub_status_module”基本状态信息
1、编辑配置文件 
[root@node0 ~]# vim /etc/nginx/nginx.conf
server {
  listen      80;
  server_name  localhost;
  root /www/lweim/;
  location /status {## 指明状态页面目录
  stub_status on;  ## 开启状态页
  }
}
[root@node0 ~]# mkdir /www/lweim/status/  ## 创建状态页目录

2、访问 web

Nginx 基础应用详解

Active  connections:处于活动状态的客户端连接数量
Accepts:已经接受客户端的总请求数量
Handled:已经处理客户单的总请求数量
Request:客户端发出的总请求数量
Reading:正在读取客户端请求报文首部的连接数量
Writing:正在向客户端发送响应报文的连接数量
Waiting:正在等待客户端发出请求的空闲进程数

更多 Nginx 相关教程见以下内容

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

Ubuntu 16.04 下安装部署 Nginx+uWSGI+Django1.9.7  http://www.linuxidc.com/Linux/2016-07/133484.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

三、实现“ngx_http_ssl_module”https 请求
1、在未修改配置文件之前尝试访问“https://172.18.42.200”

Nginx 基础应用详解

2、修改配置文件
server {
  listen  80;
  server_name  localhost;
  root /www/lweim/;
}
 
server {
  listen  443 ssl;  ##https 监听在 tcp 的 443 端口
  server_name  localhost;
 
  ssl_certificate    /etc/nginx/ssl/ngx.crt;  ## 指明 ngx.crt 的文件路径
  ssl_certificate_key  /etc/nginx/ssl/ngx.key;  ## 指明 ngx.key 的文件路径
 
  ssl_session_cache  shared:SSL:1m;
  ssl_session_timeout    5m;
 
  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers  on;
 
  location /nginx {
  }
}

Ssl  on | off:是否启用当前虚拟主机的 ssl 功能
Ssl_ certificate  file:当前虚拟主机使用的 PEM 格式的证书文件
Ssl_certificate_key  file:当前虚拟机使用的证书文件中的公钥配对的私钥文件路径,依然是 PEM 格式
Ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2]:表示 ssl 协议的版本;摩恩为后 3 个
Ssl_session_cache off | none | [builtin [ : size] ]  [shard : name : size]:指明 ssl 会话缓存的机制
  builtin:使用 openssl 内建的缓存机制,对此机制为各 worker 独有
  shared:在各个 worker 进程共享的缓存
name:缓存空间的名称
size:缓存空间的大小以字节为单位,每 1MB 内存可缓存 4000 个会话
Ssl_session_time  timeout:ssl 会话时长,指 ssl  session  cache 中缓存条目时长

3、再次访问 web

Nginx 基础应用详解

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-08/134026p2.htm

四、实现“ngx_http_rewrite_module”重写 url
1、修改配置文件
location / {
 rewrite (.*)\.html$ $1.txt last;
 rewrite (.*)\.txt$ $1.jpg break;
}
## 当用户第一次请求 uri 中以 html 结尾时,会把 uri 重写为以 txt 结尾并重新开始循环;
随后匹配到第二条 rewrite,把 uri 中的 txt 更改为以 jpg 结尾的文件并响应给客户端

rewrite  regex  replacement [flag]
 regex:基于正则表达式,用于匹配用户请求的 url
 replacement:为重写的结果
 Flag:
  Last:重写完成后停止对当前 uri 在 location 中的后续其他操作,而后更改为对新的 uri 做出新一轮处理
  Break:重写完成后停止对当前 uri 在当前 location 中的后续其他操作,直接返回给客户端
  Redirect:重写完成后,临时返回给客户端一个新的 URL,随后浏览器在根据新的 URL 请求新的资源;响应码为 302
  Premanent:重写完成后,永久返回给客户端一个新的 URL,随后浏览器在根据新的 URL 请求信的资源;响应码为 301

2、访问 web 服务

Nginx 基础应用详解

五、实现“ngx_http_gizp_module”压缩功能:只能用在 http 上下文
1、修改 nginx 配置文件
http {
 gzip  on;
 gzip_comp_level 6;
 gzip_disable msie6;
 gzip_http_version 1.0;
 gzip_types text/plain;
}

Gzip  on | off:启用或禁用 gzip 压缩响应报文
Gzip_comp_level level:指定压缩比,1-9;默认为 1
Gzip_disable regex:regex 是匹配客户端浏览器类型的模式,表示对所有匹配到的浏览器下不执行压缩响应
Gzip_min_length length:触发启用先压缩功能的响应报文的最小长度
Gzip_http_version:设定启用压缩响应功能时,协议的最小版本
Gzip_types:指定仅执行压缩的资源内容类型;默认为 text/html
gzip_types text/plain、text/css、text/xml、application/x-javascript、application/xml、application/json、application/java-script;

2、访问 web

Nginx 基础应用详解

六、实现“ngx_http_fastcgi_module”
1、虚拟机 2 安装 php-fpm 服务
[root@node1 ~]# yum install php-fpm -y  ## 安装 php-fpm 服务
[root@node1 ~]# vim /etc/php-fpm.d/www.conf  ## 修改 php-fpm 的配置文件
listen = 172.18.42.201:9000  ## 监听本地能与外部通信的 IP 地址
listen.allowed_clients = 172.18.42.200  ## 监听具有 httpd 服务的 IP
[root@node1 ~]# ss -tnl
State      Recv-Q Send-Q  Local Address:Port                  Peer Address:Port             
LISTEN      0      128      172.18.42.201:9000                            *:*

Nginx 和 php 结合的方式只有 fpm;php-fpm 的工作方式类似于 httpd 的 prefork 模块
  Listen =:指明本地能与外部通信的地址
  Listen.allow_clients =:指明具有 httpd 服务的 IP
  Pm = dynamic | static
  Pm.start_servers:启动 fpm 进程时启动的工作进程数量
  Pm.min_spare_servers:最少空闲进程数
  Pm.max_spare_servers:最大空闲进程数
  Pm.max_children:最大工作进程数

2、修改 nginx 的配置文件
location ~ \.php$ {
 fastcgi_pass  172.18.42.201:9000;## 指明 fpm-php 服务的 IP
 fastcgi_index  index.php;
 fastcgi_param  SCRIPT_FILENAME  /web/lweim/$fastcgi_script_name;
 include    fastcgi_params;
}

Fastcgi_pass:用来指明代理那个服务器(装了 php-fpm 的服务器能与外部监听的地址)
Fastcgi_index:fastcgi 应用的主页面名称
Fastcgi_param:传递给 fpm 服务器参数

3、访问 web
Nginx 基础应用详解

七、实现“fastcgi_cache_path”缓存:只能用在 http 上下文
1、修改 nginx 的配置文件
[root@node0 ~]# vim /etc/nginx/nginx.conf
http {
fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=ngxcache:10m;  ## 定义缓存
}
 
location ~ \.php$ {
  fastcgi_pass 172.18.42.201:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME /web/lweim/$fastcgi_script_name;
  include fastcgi_params;
  fastcgi_cache ngxcache;    ## 指明缓存名称
  fastcgi_cache_key $request_uri;    ## 定义缓存键
  fastcgi_cache_valid 200 302 10m;  ## 状态码 200、302 缓存 10 分钟
  fastcgi_cache_valid 301 1h;    ## 状态码 301 缓存 1 个小时
  fastcgi_cache_valid 404 2h;    ## 状态码 404 缓存 2 个小时
}

Fastcgi_cache_path path:指明缓存文件的路径
Fastcgi_cache zone | off:是否启用缓存,如果启用,需要指明缓存与那个 cache 文件中
Fastcgi_cache_key string:定义要使用的缓存键
Fastcgi_cache_methods GET | HEAD | POST:缓存那些类型的请求的相关数据
Fastcgi_cache_vaild [code..]  time:对不同响应码设定其可缓存时间

2、查看缓存目录
[root@node0 ~]# tree /var/cache/nginx/fastcgi/ 
/var/cache/nginx/fastcgi/
├── 1
│  └── af
│        └── e251273eb74a8ee3f661a7af00915af1
├── b
│  └── fe
│        └── c86156f7dcfecf44876ca30d1bac7feb
└── e
    └── 39
        └── f46b8508aa08a6f8670fb088b8a9739e

八、实现“ngx_http_proxy_module”
1、修改 nginx 配置文件
[root@node0]# vim nginx.conf
location ~ .*\.txt$ {##txt 结尾的文件由虚拟机 2 来响应
 proxy_pass   
}
 
location ~ .*\.jpg$ {
 proxy_pass    ##jpg 结尾的文件由虚拟机 3 来响应
}

(1)当 proxy_pass 后面的路径不带 uri 时,会将其 location 中的 uri 传递给后端主机 
location  /bbs  {
  proxy_pass http://172.18.42.200;

  ## 最终请求的路径为 http://172.18.42.200/bbs

(2)当 proxy_pass 后面路径是一个 uri 时,它会将 location 中的 uri 替换为 proxy_pass 的后端主机
location  /bbs  {
  proxy_pass http://172.18.42.200/;
}   
## 最终请求的路径为 http://172.18.42.200;把“/bbs/”当做成“/”

(3)如果 location 定义其 uri 时使用了正则表达式模式匹配机制,则 proxy_pass 后的路径一定不能带 uri
location  ~* \.php$  {
  proxy_pass 
}

2、配置虚拟机 2
[root@node1 ~]# yum install httpd -y
[root@node1 ~]# echo “172.18.42.201 txt” > /var/www/html/wtc.txt 
[root@node1 ~]# systemctl start httpd.service

3、配置虚拟级 3
[root@node1 ~]# yum install httpd -y
[root@node2 ~]# mv /root/wawa.jpg /var/www/html/wtc.jpg
[root@node1 ~]# systemctl start httpd.service

4、访问 web

Nginx 基础应用详解

Nginx 是一款轻量级的 Web 和反向代理服务器,它的诞生主要是为了解决 C10K 的问题,它具有较多的特性;
Nginx 的特性:

 1、模块化设计,具有较好的扩展性
 2、具有高可靠性
 3、支持热部署:可以在不影响用户使用的情况下,升级老版本;可以不停机更新配置文件、更换日志文件、更换服务器程序版本
 4、低消耗内存:10K 个 keepalive 连接模式下的非活动连接仅消耗 2.5M 内存
 5、是 event-driven 事件驱动模型:具有一个主进程,多个子进程,每个子进程响应多个请求
 
Nginx 的基本功能:
 1、静态资源的 web 服务器
 2、可以作为 http 协议的正反向代理服务器
正向代理:Nginx 作为服务器,可直接响应资源给客户端
反向代理:Nginx 作为代理器,客户端不直接和服务器交流,而是通过和代理服务器的代理器来交流;通过代理器来读取服务器中的资源,从而响应给客户端
 3、支持 pop3/imap4 协议反向代理服务器
 4、支持 FastCGI、UWSGI 等
 5、支持模块化:例如 ssl、zip

Nginx 的程序架构图:

Nginx 基础应用详解

Master:Master 为主进程,主要作用是加载配置文件、管理 worker 进程、可进行平滑升级
Worker:worker 为子进程,由 master 主进程生成,一个 worker 进程可以处理多个客户端请求;主要作用是接受客户端请求、http 代理、FastCGI 代理、Memcache 代理、在磁盘内缓存以及管理磁盘内的缓存

准备环境:

虚拟机 1:nginxIP:172.18.42.200
虚拟机 2:httpd(后端主机)IP:172.18.42.201
虚拟机 3:httpd(后端主机)IP:172.18.42.202

一、实现“ngx_http_auth_basic_module”认证机制
1、虚拟机 1 安装 nginx 服务
[root@node0 ~]# yum install nginx

2、编辑 nginx 主配置文件
[root@node0 ~]# vim /etc/nginx/nginx.conf  ##nginx 的主配置文件
server {
listen 80;  ## 监听的端口
server_name localhost;
root /www/lweim/;  ## 指定读取资源路径
location /nginx {
  auth_basic “Show your Information”;  ## 指定提示页
  auth_basic_user_file /etc/nginx/.ngxpasswd;  ## 指定密码文件路径
}
}
[root@node0 nginx]# htpasswd -c -m /etc/nginx/.ngxpasswd lweim  ## 创建虚拟用户“lweim”
-c:当.nginxpasswd 这个文件不存在时需使用
-m:使用 md5 算法
[root@node0 ~]# echo “172.18.42.200 Nginx 1” > /www/lweim/nginx/index.html

3、访问 web 页面

Nginx 基础应用详解

二、实现“ngx_http_stub_status_module”基本状态信息
1、编辑配置文件 
[root@node0 ~]# vim /etc/nginx/nginx.conf
server {
  listen      80;
  server_name  localhost;
  root /www/lweim/;
  location /status {## 指明状态页面目录
  stub_status on;  ## 开启状态页
  }
}
[root@node0 ~]# mkdir /www/lweim/status/  ## 创建状态页目录

2、访问 web

Nginx 基础应用详解

Active  connections:处于活动状态的客户端连接数量
Accepts:已经接受客户端的总请求数量
Handled:已经处理客户单的总请求数量
Request:客户端发出的总请求数量
Reading:正在读取客户端请求报文首部的连接数量
Writing:正在向客户端发送响应报文的连接数量
Waiting:正在等待客户端发出请求的空闲进程数

更多 Nginx 相关教程见以下内容

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

Ubuntu 16.04 下安装部署 Nginx+uWSGI+Django1.9.7  http://www.linuxidc.com/Linux/2016-07/133484.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

三、实现“ngx_http_ssl_module”https 请求
1、在未修改配置文件之前尝试访问“https://172.18.42.200”

Nginx 基础应用详解

2、修改配置文件
server {
  listen  80;
  server_name  localhost;
  root /www/lweim/;
}
 
server {
  listen  443 ssl;  ##https 监听在 tcp 的 443 端口
  server_name  localhost;
 
  ssl_certificate    /etc/nginx/ssl/ngx.crt;  ## 指明 ngx.crt 的文件路径
  ssl_certificate_key  /etc/nginx/ssl/ngx.key;  ## 指明 ngx.key 的文件路径
 
  ssl_session_cache  shared:SSL:1m;
  ssl_session_timeout    5m;
 
  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers  on;
 
  location /nginx {
  }
}

Ssl  on | off:是否启用当前虚拟主机的 ssl 功能
Ssl_ certificate  file:当前虚拟主机使用的 PEM 格式的证书文件
Ssl_certificate_key  file:当前虚拟机使用的证书文件中的公钥配对的私钥文件路径,依然是 PEM 格式
Ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2]:表示 ssl 协议的版本;摩恩为后 3 个
Ssl_session_cache off | none | [builtin [ : size] ]  [shard : name : size]:指明 ssl 会话缓存的机制
  builtin:使用 openssl 内建的缓存机制,对此机制为各 worker 独有
  shared:在各个 worker 进程共享的缓存
name:缓存空间的名称
size:缓存空间的大小以字节为单位,每 1MB 内存可缓存 4000 个会话
Ssl_session_time  timeout:ssl 会话时长,指 ssl  session  cache 中缓存条目时长

3、再次访问 web

Nginx 基础应用详解

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-08/134026p2.htm

九、实现“proxy_set_header”,让后端主机记录源 IP
1、在未修改配置文件之前查看后端主机的记录日志
[root@node1 ~]# tail /var/log/httpd/access_log
172.18.42.200 – – [25/May/2016:19:20:34 +0800] “GET /wtc.txt HTTP/1.0” 200 18 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0”
172.18.42.200 – – [25/May/2016:19:20:34 +0800] “GET /wtc.txt HTTP/1.0” 200 18 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0”
 ## 后端主机记录的访问 IP 都是 nginx 自身的的 IP

2、修改 nginx 的配置文件
[root@node0 nginx]# vim nginx.conf
location ~ .*\.txt$ {
 proxy_pass http://172.18.42.201;
 proxy_set_header X-Real_IP $remote_addr;
}

3、修改虚拟机 2httpd 的配置文件
[root@node1 ~]# vim /etc/httpd/conf/httpd.conf
#LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined
LogFormat “%{X-Real_IP}i %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined

4、访问 web 之后查看后端主机的记录日志
[root@node1 ~]# tail /var/log/httpd/access_log
172.18.250.14 – – [25/May/2016:19:27:41 +0800] “GET /wtc.txt HTTP/1.0” 304 – “-” “Mozilla/5.0 (Wi
172.18.250.14 – – [25/May/2016:19:27:41 +0800] “GET /wtc.txt HTTP/1.0” 304 – “-” “Mozilla/5.0 (Wi
172.18.250.14 – – [25/May/2016:19:27:41 +0800] “GET /wtc.txt HTTP/1.0” 304 – “-” “Mozilla/5.0 (Wi
  ## 记录的访问 IP“172.18.250.14”为物理机的 IP,做日志分析才有意义

十、实现实现“proxy_cache”缓存
1、修改 nginx 配置文件
http {
proxy_cache_path /var/cache/nginx/proxy levels=1:2 keys_zone=ngxcache:10m;
}
location ~ .*\.txt$ {
          proxy_pass http://172.18.42.201;
          proxy_set_header X-Real_IP $remote_addr;
          proxy_cache ngxcache;
          proxy_cache_key $request_uri;
          proxy_cache_valid 200 302 404 1h;
        }

2、访问 web 之后查看缓存目录
[root@node0 ~]# tree /var/cache/nginx/proxy/
/var/cache/nginx/proxy/
└── 5
    └── fd
        └── 19cbf2faabf255f790ebd83de4a42fd5

十一、实现“ngx_http_upstream_module”负载均衡
1、修改 nginx 配置文件
http  {
upstream web {## 定义一个服务器组
  server 172.18.42.201 weight=1;
  server 172.18.42.202 weight=2;
    }
}
location / {
  proxy_pass    ## 引用服务器组 
        }
}       
[root@node1 ~]# curl http://172.18.42.200
<h1>
172.18.42.201 Web Server 1
</h1>
[root@node1 ~]# curl http://172.18.42.200
<h1>
172.18.42.202 Web Server 2 .
</h1>
[root@node1 ~]# curl http://172.18.42.200
<h1>
172.18.42.202 Web Server 2 .
</h1>
[root@node1 ~]# curl http://172.18.42.200
<h1>
172.18.42.201 Web Server 1
</h1>
 ## 实现了负载均衡

Upstream name {……}
  定义后端服务器组,可直接使用字符串
Server address {parameters}:指明服务器的地址和相关参数
  address:
IP[: PORT]:给定 IP 地址
HOSTNAME[: PORT]:当后端有多个虚拟主机时,应该使用 hostname 定义
Unix:/path/to/some_sock_file
  parameters:
Weight=number:后端服务器权重
Max_fails=number:设定最大失败重试次数
Fail_timeout time:设置服务器不可用的超时时长
Backup:备用主机;定义后端主机是否为一个 sorry_server
Down:手动标记后自动下面,不在处理任何请求
 
2、实现源地址哈希调度算法
http  {
upstream web {
  server 172.18.42.201 weight=1;
  server 172.18.42.202 weight=2;
  ip_hash;  ## 源地址哈希算法;将来自同一用户的请求始终发往同一主机上       
    }
}
location / {
  proxy_pass http://web; 
 }
[root@node1 ~]# curl http://172.18.42.200
<h1>
172.18.42.201 Web Server 1
</h1>
[root@node1 ~]# curl http://172.18.42.200
<h1>
172.18.42.201 Web Server 1
</h1>
[root@node1 ~]# curl http://172.18.42.200
<h1>
172.18.42.201 Web Server 1
</h1>
[root@node1 ~]# curl http://172.18.42.200
<h1>
172.18.42.201 Web Server 1
</h1>
 ## 响应请求的始终是一台后端主机

Ip_hash:源地址哈希算法,只能用在 upstream 上下文;指定调度算法
Least_conn:最少连接调度方法,只能用在 upstream 上下文
Keepalive:指明尝试连接后端主机次数,只能用在 upstream 上下文中

3、“Health_check”对后端主机做健康检测:只能用在 location 上下文
  Interval=number:检测的频度,默认为 5s
  Fails=number:判定为失败的检测次数
  Passes=number:判定为检测成功的次数
  Uri=uri:执行健康状态监测时请求的 uri
  Match=name:基于哪个 match 做检测结果为“成功”或者“失败”的判断
  Port=port:向服务器的那个端口发起健康状态检测请求

4、“match  name”对后端主机做健康状态监测时,定义其结果判断标准的标准指令:只能用于 http 上下文

  Status:期望的响应码
Status CODE
Status!CODE
Status  CODE~CODE
  Header:基于响应首部进行判断
Header HEADER=VALUE
Header HEADER!=VALUE
Header [!]HEADER
Header Header ~ VALUE
  Body:期望的响应码报文的主体部分应该有的内容
Body ~“CONTENT”
Body!~“CONNTENT”

5、“hash key”:定义调度方法,可自定义基于何种信息(key)进行绑定:只能用在 upstream 上下文
  Hash $remote_addr:根据后端主机的 IP 地址进行绑定
  Hash $request_uri:绑定第一次访问的服务器,以后每次的访问都指定元的的那台服务器
  Hasg $cookie_username:根据客户端的 cookie

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-08/134026.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计13935字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中