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

Nginx基础应用详解

419次阅读
没有评论

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7971292
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新 SSL 证书系统、申请 godaddy 的 APIKEY 公司之前花钱购买的 ssl 证书快...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...