2026/1/16 9:23:07
网站建设
项目流程
西宁做网站的好公司,自己设计logo的软件,做网站之前要怎样准备图片,自助制作网站upstream模块
对于upstream模块而说#xff0c;它默认已经被编译进Nginx中了想禁用的话#xff0c;通过 –without-http_upstream_model 这样一个参数来明确的禁用
1 #xff09;基本用法
1.1 upstream语法#xff1a; upstream name { … }默认值#xff1a;无上下文它默认已经被编译进Nginx中了想禁用的话通过 –without-http_upstream_model 这样一个参数来明确的禁用1 基本用法1.1 upstream语法 upstream name { … }默认值无上下文http示例upstream { ...... ...... }1.2 server和 upstream 段平行用于指定我们后端的一个具体应用服务的一个具体地址语法server address [parameters];address 是ip地址端口后面可跟一些url默认值无上下文upstreamparameters 可选值可选参数含义weightnumber权重值默认为1max_connsnumber上游服务器的最大并发连接数fail_timeouttime服务器不可用的判定时间max_failsnumber服务器不可用的检查次数backup备份服务器仅当其他服务器都不可用时down标记服务器长期不可用离线维护weight 权重值越大代表这台服务器的处理能力更强被分配的请求会更多max_conns 定义之后超出直接拒绝fail_timeout 会启动一个计数器结合 max_failsmax_fails 最大失败次数结合 fail_timeout定义 fail_timeout 为 10s, max_fails 为 310s 内如果出现3次没有返回结果则判定当前服务器不可用backup 当所有其他服务器挂掉不可用了才会将请求调度到 backup 服务器down 永远不会被调度1.3 keepalive语法keepalive connections;这个 connections 不宜过大默认值无上下文upstream示例keepalive 16;是限制每一个worker子进程与上游服务器建立空闲长连接的一个最大数量可以通过keepalive这样一个参数来启用Nginx与上游服务器之间的一个长连接功能启用长连接的情形下的话有很多的并发请求都调度给某一台上游服务器上游服务器处理完之后结果都返回给Nginx了如果开启长连接功能这些连接可能并不会关闭, 存在这样一种情形某一个时刻并发请求特别多超过了五千个并发连接上游服务器处理完之后把这五千个请求全部返回给Nginx但是在这时候没有任何请求了那这五千千个连接都在这空闲着吗所以会很浪费的因为你又开启了keepalive长连接功能所以同时这五千个链接都会在这保持长连接所以说我们的keepalive后面跟一个connection的这样一个参数就定义了Nginx和后端的上游服务器可以开启的长连接的一个空闲长连接的最大数量示例中keepalive 16;也就是说在一个时刻内Nginx到上游服务器的空闲的长连接是16个所谓空闲的长连接就是这个长连接TCP连接接建立着但是上面没有请求去发送但这就是空闲的长连接这个也是有利于我们去更好的去复用这个系统资源避免某些极端情况的发生的1.4 keepalive_requests语法keepalive_requests number;默认值keepalive_requests 100;上下文upstream单个长连接可以处理的最多的HTTP请求个数建立一个长连接之后, 不可能无限制制的允许请求的发生, 也不能无限限制的让这个长连接一直存在假如说你这个长接接不不停的发送HTTP请求最多发送100个HTTP请求之后就要强制关闭如果客户端还有请求发送过来把这个长连接关闭掉之后再次启动一个新的连接给你处理请求1.5 keepalive_timeout语法keepalive_timeout time;默认值keepalive_timeout 60s上下文upstream空闲长连接的最长保持时间当现在系统比较空闲的时候仍然保持了很多长连接这个时候每一个长连接最长保持多长时间也是有一定的限制的长期没有请求在这个长链接上发送的话可以通过keepalive_timeout 后面定义这样一个时间值比如说60秒内这个长连接上60秒内没有任何请求发送的话那这个长连接会被自动销毁1.6 queue (商业版开源没有)语法queue number [timeouttime]默认值无上下文upstream示例queue 100 timeout30s;这里的 100 是队列长度所有上游服务器不可用时请求会被放到队列中等待2 配置示例upstream back_end { server 127.0.0.1:8080 weight3 max_conns1000 fail_timeout10s max_fails2; keepalive 32 keepalive_requests 50 keepalive_timeout 30s; }应用程序服务器的配置示例总配置目录/etc/nginx/nginx.confinclude /etc/ngin/conf.d/*.conf;vim /etc/nginx/conf.d/app_server.conf 单个可用的配置server { listen 8080; server_name localhost; location /proxy/ { root /opt/nginx/html/app; index proxy.html; } }$mkdir /opt/nginx/html/app/proxy -p cd /opt/nginx/html/app/proxy写一个脚本产生随机数模拟动态服务 $vim create_random_number.sh#!/bin/bash # DIR/opt/nginx/html/app/proxy FILEproxy.html while true;do echo Application Server,This time create number: $RANDOM $DIR/$FILE sleep 1 done运行脚本 $nohup sh create_random_number.sh 多次查看发现文件有变化 $cat proxy.html基于这种形式来模拟动态服务多次通过 $curl localhost:8080/proxy/可查看对应的变化反向代理配置示例1 proxy_pass 指令由http_proxy模块提供(ngx_http_proxy_module)默认已被编译进nginx禁用须通过--without-http_proxy_module语法proxy_pass URL;URL 的参数原则URL 必须以 http(s) 开头URL 可以携带变量URL 中是否带uri, 回直接影响发往上游请求的URL默认值无上下文location、if、limit_except示例一proxy_pass http:/127.0.0.1:8080示例二proxy_pass http:/127.0.0.1:8090/proxy2 配置示例 proxy.confupstream back_end { server 192.168.184.20:8080 weight2 max_conns1000 fail_timeout10s max_fails3; keepalive 32 keepalive_requests 80 keepalive_timeout 20s; } server { listen 80 server_name proxy.baidu.com; location /proxy { proxy_pass http://back_end/proxy; } }本机 proxy.baidu.com 配置好 hosts访问proxy.baidu.com/proxy 同样可以看到变化的效果这里会寻找上游服务器中的 proxy.html之前上游服务器的脚本仍旧还在运行这里仍然会动态改变 proxy.html 的内容3 proxy 常见误区两种常见用法proxy_pass http://192.168.184.20:8080proxy_pass http://192.168.184.20:8080/带 / 和 不带 / 用法区别A. 不带/意味着Nginx不会修改用户URL,而是直接透传给上游的应用服务器配置示例location /bbs/ { proxy_pass http://127.0.0.1:8080 }用户请求url: /bbs/abc/test.html请求到达Nginx的url: /bbs/abc/test.html请求到达上游服务器的url: /bbs/abc/test.htmlB. 带/意味着Nginx会修改用户url,修改方法将location后的URL从用户URL中删除配置示例location /bbs/ { proxy_pass http://127.0.0.1:8080/ }用户请求url: /bbs/abc/test.html请求到达Nginx的url: /bbs/abc/test.html请求到达上游应用服务器的url: /abc/test.html代理到上游服务器的URL结尾是否有必要加 /这个根据上述示例来选择场景应用