IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 三、nginx服务的nginx.conf的参数配置解析 -> 正文阅读

[系统运维]三、nginx服务的nginx.conf的参数配置解析

前一篇:二、nginx服务的nginx.conf配置参数解析?

后一篇:四、nginx服务器的参数配置解析


目录

一、虚拟主机设定模块

1、upstream模块配置样式

1.1、默认配置

1.2、weight(权重)配置

1.3、max_fails和 fail_timeout的配置

1.4、down的配置

1.5、backup的配置

1.6、max_conns的配置

2、ip_hash的配置

3、url_hash(第三方插件)

4、fair(第三方插件)

二、server配置


一、虚拟主机设定模块

#负载均衡服务器列表

#一般来说运维人员通常把负载均衡类别配置在相应的虚拟主机的配置文件中)


1、upstream模块配置样式

upstream fansik {
? ? #后端服务器访问规则
? ? ip_hash;
? ? #weight参数表示权重值,权值越高被分配到的几率越大
? ? server 192.168.1.101:8081 weight=5;
? ? server 192.168.1.102:8081 max_fails=3 fail_timeout=10s;
}

1.1、默认配置

upstream fansik {
? ? server 192.168.1.101:8081;
? ? server 192.168.1.102:8081;
}

默认的配置后端的服务器访问规则就是默认的轮询方式的,就简单的表述:

1进来访问192.168.1.101的服务

2进来访问192.168.1.102的服务

该轮询的访问规则时无法进行一个权重、或者是资源请求的判断的功能的。

1.2、weight(权重)配置

upstream fansik {
????#weight参数表示权重值,权值越高被分配到的几率越大
????server 192.168.1.101:8081 weight=5;
????server 192.168.1.102:8081 weight=1;
}

注:ip_hash 与 weight(权重)配置不可同时使用。?

1.3、max_fails和 fail_timeout的配置

max_fails=number:该选项与 fail_timeout 配合使用,旨在 fail_timeout 时间段内,如果向当前的上游服务器转发失败次数超过 number,则认为在当前的 fail_timeout 时间段内这台上游服务器不可用。max_fails 默认为1,如果设置为0,则表示不检查失败次数。
fail_timeout=time:fail_timeout 表示该时间段内转发失败多少次后就认为上游服务器暂时不可用,用于优化方向代理功能。它与向上游服务器建立连接的超时时间、读取上游服务器的响应时间等完全无关,

upstream report{                                                                                                                       
        server 192.168.1.102:18080 max_fails=10 fail_timeout=60s;                                                                                                            
        server 192.168.1.103:28080 max_fails=10 fail_timeout=60s;                                                                                                            
        server 192.168.1.104:18080 max_fails=10 fail_timeout=60s;                                                                                                                                                                                                                       
        #ip_hash;                                                                                                                              
}

但是需要配置proxy_next_upstream参数使用的

location / {
? ? ? ? ? ? proxy_pass http://tomcatserver1;
?? ??? ??? ?index ?index.html index.htm;
?? ??? ??? ?# proxy_next_upstream
?? ??? ??? ?proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;?
?? ??? ??? ?proxy_connect_timeout 20s;
?? ??? ??? ?proxy_read_timeout 20s;
?? ??? ??? ?proxy_send_timeout 20s;
}

1.4、down的配置

down表示单前的server暂时不参与负载,不适用与ip_hash的访问策略的

upstream myServer {   

    server 192.168.1.102:9090 down; 
    server 192.168.1.103:9090; 
}

1.5、backup的配置

备用服务器, 其它所有的非backup机器down或者忙的时候,请求backup机器,简单的理解就是:只有在所有的非备份上游服务器都失效后,才会向所在的上游服务器转发请求

upstream myServer {   

    server 192.168.1.102:9090 backup; 
    server 192.168.1.103:9090; 
}

注:在使用 ip_hash 配置项时它是无效的。

1.6、max_conns的配置

# worker进程设置1个,便于测试观察成功的连接数
worker_processes 1;
upstream tomcats {?
? ? server 192.168.1.102:8080 max_conns=2;?
? ? server 192.168.1.103:8080 max_conns=2;?
? ? server 192.168.1.104:8080 max_conns=2;
}

注:限制每台server的连接数,用于保护避免过载,可起到限流作用。

2、ip_hash的配置

使用场景:

在有些场景下,我们可能会希望来自某一个用户的请求始终落在国定的一台上游服务器中。例如,假设上游服务器会缓存一些信息,如果同一个用户的请求任意的转发到集群中的任一台上游服务器中,那么每一台上游服务器都有可能会缓存同一份信息,这既会造成资源的浪费,也会难以有效的管理缓存信息。ip_hash 就是泳衣解决上述问题的,它首先根据客户端的 IP 地址计算出一个 key,将 key 按照 upstream 集群里的上游服务器数量进行取模,然后以取模的结果把请求转发到相应的上游服务器中。这样就确保了同一个客户端的请求只会转发到指定的上游服务器中。

upstream backend {
          ip_hash;
          server 192.168.11.10:8080;
          server 192.168.11.11:8080;
          server 192.168.11.12:8080 down;
          server 192.168.11.13:8080;
}

3、url_hash(第三方插件)

?url_hash按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存服务器时比较有效。?
在upstream中加入hash语句,hash_method是使用的hash算法

upstream resinserver{
server 192.168.10.10:8080;
server 192.168.10.11:8080;
hash $request_uri;
hash_method crc32;
}

4、fair(第三方插件)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。
?

upstream resinserver{
server 192.168.1.10:8080;
server 192.168.1.11:8080;
fair;
}

二、server配置

server {
? ? #监听80端口
? ? listen 80;
? ? #定义主机名,主机名可以有多个,名称还可以使用正则表达式(~)或通配符
? ? #(1)先做精确匹配检查
? ? #(2)左侧通配符匹配检查:*.fansik.com
? ? #(3)右侧通配符匹配检查:mail.*
? ? #(4)正则表达式匹配检查:如~^.*\.fansik\.com$
? ? #(5)detault_server
? ? server_name fansik.fansik.com;
? ? #设定本虚拟主机的访问日志
? ? access_log logs/fansik.fansik.com.access.log;

server {
? ? listen 80;
? ? server_name fansik.fansik.com;
? ? access_log logs/fansik.fansik.com.access.log;

location [=|~|~*|^~] uri {...}
? ? 功能:允许根据用户请求的URI来匹配定义的个location,匹配到时,此请求将被相应的location配置块中的配置所处理
? ? =:表示精确匹配检查
? ? ~:正则表达式模式匹配检查,区分字符大小写
? ? ~*:正则表达式模式匹配检查,不区分字符大小写
? ? ^~:URI的前半部分匹配,不支持正则表达式
? ? !~:开头表示区分大小写的不匹配的正则
? ? !~*:开头表示不区分大小写的不匹配的正则
? ? /:通用匹配,任何请求都会被匹配到

location / {
? ? ? ? #定义服务器的默认网站根目录位置
? ? ? ? root html;
? ? ? ? #定义首页索引文件的名称
? ? ? ? index index.html index.htm;
? ? ? ? #引用反向代理的配置,配置文件目录根据编译参数而定
        include proxy.conf; ? ?
? ? ? ? #定义后端负载服务器组
? ? ? ? proxy_pass http://fansik;
? ? }

#如果编译时加入了--conf-path=/etc/nginx/nginx.conf指定了配置文件的路径那么就把proxy.conf放在/etc/nginx/目录下
#如果没有制定配置文件路径那么就把proxy.conf配置放到nginx的conf目录下。

alias path和root path的区别;

? ? location /images/ {
? ? ? ? root "/data/images"
? ? }

访问:http://fansik.fansik.com/images/a.jpg 就是直接去访问服务的/data/images/images/a.jpg的内容

 ? location /images/ {
? ? ? ? alias "/data/images/"
? ? }

访问:http://fansik.fansik.com/images/a.jpg 就是直接去访问服务的/data/images/images/a.jpg的内容

#定义错误提示页面

? ? error_page 500 502 503 504 /50x.html;
? ? location = /50x.html {
? ? ? ? root html;
? ? }

? ? #设定查看Nginx状态的地址
? ? #只能定义在location中
? ? #htpasswd -c -m /etc/nginx/.htpasswd fansik(-c 参数第一次创建时使用)

location /Status {
? ? ? ? stub_status on;
? ? ? ? allow all;
? ? ? ? #access_log off;
? ? ? ? #allow 192.168.1.0/24;
? ? ? ? #deny all;
? ? ? ? #auth_basic "Status";
? ? ? ? #auth_basic_user_file /etc/nginx/.htpasswd;
}

status结果实例说明:
Active connections: 1 (当前所有处于打开状态的连接数)
server accepts handled requests
174(已经接受进来的连接)

174(已经处理过的连接)

492(处理的请求,在保持连接模式下,请求数可能会多于连接数量)
Reading: 0 Writing: 1 Waiting: 0?
Reading:正处于接受请求状态的连接数
Writing:请求接受完成,正处于处理请求或发送相应的过程中的连接数
Waiting:保持连接模式,且处于活动状态的连接数


?#基于IP的访问控制

? ? allow IP/Netmask
? ? deny IP/Netmask
? ? location ~ /\.ht {
? ? ? ? deny all;
? ? }

样式:

server {
? ? listen 80;
? ? server_name fansik.fansik.com;
? ? access_log logs/fansik.fansik.com.access.log;
    location / {
? ? ? ? root html;
? ? ? ? index index.html index.htm;
        include proxy.conf; ? ?
? ? ? ? proxy_pass http://fansik;
? ? }
? ? location /images/ {
? ? ? ? root "/data/images"
? ? }
? ? error_page 500 502 503 504 /50x.html;
? ? location = /50x.html {
? ? ? ? root html;
? ? }
    location /Status {
? ? ? ? stub_status on;
? ? ? ? allow all;
? ? ? ? #access_log off;
? ? ? ? #allow 192.168.1.0/24;
? ? ? ? #deny all;
? ? ? ? #auth_basic "Status";
? ? ? ? #auth_basic_user_file /etc/nginx/.htpasswd;
   }
? ?allow IP/Netmask
? ?deny IP/Netmask
? ?location ~ /\.ht {
? ? ? ? deny all;
? ?}
}
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:29:31  更:2022-05-07 11:32:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:04:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码