网站首页 > 精选教程 正文
眼泪不是答案,拼搏才是选择。只有回不了的过去,没有到不了的明天。
- 上一篇:ailx10:Nginx基础入门002 ;
- 下一篇:ailx10:Nginx基础入门004 ;
ngx_http_core_module模块提供的变量,有了这些变量,我们可以轻松的编程:
参数名含义请求中某个参数的值请求中的完整参数二进制格式的客户端地址向客户端发送的响应中包体部分的字节数客户端请求中的字段客户端请求头部中的字段客户端请求头部中的字段当前请求所使用的配置项的值当前请求的,不带任何参数客户端原始,带完整的参数客户端请求头部中的字段所在机器的名称当前请求中相应头部的值返回客户端的相应中相应头部的值请求中的是否带参数当前连接的限速是多少,表示不限速当前的版本号请求中的参数,只读客户端的地址客户端连接使用的端口使用时定义的用户名用户请求经过或转化后的请求中的包体请求中包体存储的临时文件名当请求全部完成时,其值为请求中的方法名协议类型服务器地址服务器名称服务器端口参数名含义argPARAMETERHTTP请求中某个参数的值argsHTTP请求中的完整参数binaryRemoteAddr二进制格式的客户端地址bodyBytesSent向客户端发送的http响应中包体部分的字节数contentLength客户端请求中的Content-Length字段contentType客户端请求头部中的Content-Type字段cookie_COOKIE客户端请求头部中的cookie字段document_root当前请求所使用的root配置项的值uri当前请求的URI,不带任何参数request_uri客户端原始URI,带完整的参数host客户端请求头部中的Host字段hostnameNginx所在机器的名称http_HEADER当前HTTP请求中相应头部的值send_http_HEADER返回客户端的HTTP相应中相应头部的值is_args请求中的URI是否带参数limit_rate当前连接的限速是多少,0表示不限速nginx_version当前Nginx的版本号query_string请求URI中的参数,只读remote_addr客户端的地址remote_port客户端连接使用的端口remote_user使用Auth Basic Module时定义的用户名request_filename用户请求经过root或alias转化后的URIrequest_bodyHTTP请求中的包体request_body_fileHTTP请求中包体存储的临时文件名request_completion当请求全部完成时,其值为“ok”request_methodHTTP请求中的方法名scheme协议类型server_addr服务器地址server_name服务器名称server_port服务器端口
用HTTP proxy module配置一个反向代理服务器
由于Nginx具有强大的高并发高负载能力,因此一般会作为前端的服务器直接向客户端提供静态文件服务。但也有一些复杂的业务不适合放在Nginx服务器上,这时会用Apache、Tomcat等服务器来处理。于是,Nginx通常会被配置为既是静态Web服务器,也是反向代理服务器,不适合Nginx处理的请求就会直接转发到上游服务器处理。
当客户端发来HTTP请求时,Nginx先把用户请求完整的接收完,然后再向上游服务器发起连接,缺点是延长看一个请求的处理时间,增加了Nginx所在服务器的内存和磁盘消耗,优点是降低了上游服务器的负载,尽量把压力放在Nginx服务器上。
1 负载均衡的基本配置
作为代理服务器,一般都需要向上游服务器的集群转发请求,这里的负载均衡是指选择一种策略,把请求平均的分布到每一台上游服务器。
1.1 upstream块
- 语法:upstream name {...}
- 配置块:http
upstream块定义了一个上游服务器的集群,便于反向代理中的proxy_pass使用。
upstream hack {
server hack1.ailx10.com;
server hack2.ailx10.com;
server hack3.ailx10.com;
}
server {
location / {
proxy_pass http://hack;
}
}
1.2 server
- 语法:server name [parameters]
- 配置块:upstream
server配置项指定了一台上游服务器的名字,这个名字可以是域名,IP地址端口,Unix句柄等,后面还可以跟参数,一般加个权重weight=number。
1.3 ip_hash
- 语法:ip_hash
- 配置块:upstream
同一个用户的请求始终落到固定的一台上游服务器。ip_hash和weight配置不可同时使用,如果upstream集群中有一台上游服务器暂时不可用,不能直接删除配置,而是加上down参数标识,确保转发策略的一致性。
upstream hack {
ip_hash;
server hack1.ailx10.com;
server hack2.ailx10.com down;
server hack3.ailx10.com;
}
2 反向代理的基本配置
2.1 proxy_pass
- 语法:proxy_pass URL;
- 配置项:location、if
将当前请求反向代理到URL指定的服务器上,URL可以上主机名和IP地址加端口。
server {
location / {
proxy_pass http://hack.ailx10.com;
}
}
2.2 proxy_method
- 语法:proxy_method method;
- 配置块:http、server、location
proxy_method POST;
不管请求是GET还是POST,转发给上游服务器都是POST请求。
2.3 proxy_hide_header
- 语法:proxy_hide_header header;
- 配置块:http、server、location
Nginx将上游服务器的响应转发给客户端的时候,可以指定哪些字段不能被转发。
proxy_hide_header Cache-Control;
2.4 proxy_pass_header
- 语法:proxy_pass_header header;
- 配置项:http、server、location
与proxy_hide_header功能相反。
2.5 proxy_pass_request_body
- 语法:proxy_pass_request_body on|off;
- 默认:proxy_pass_request_body on;
- 配置块:http、server、location
是否向上游服务器发送HTTP包体部分。
2.6 proxy_pass_request_headers
- 语法:proxy_pass_request_headers on|off;
- 默认:proxy_pass_request_headers on;
- 配置块:http、server、location
是否向上游服务器转发HTTP头部。
2.7 proxy_redirect
- 语法:proxy_redirect [default | off |redirect replacement]
- 默认:proxy_redirect default ;
- 配置块:http、server、location
当上游服务器返回的响应是重定向或刷新请求时,proxy_redirect可以重设HTTP头部的location或refresh字段。
2.8 proxy_next_upstream
- 语法:proxy_next_upstream [error | timeout | invalid_header | http_500 | http_502 |off ];
- 默认:proxy_next_upstream error timeout;
- 配置块:http、server、location
当向一台上游服务器转发请求出现错误时,继续换一台上游服务器处理这个请求。
- 上一篇: Nginx基础入门004
- 下一篇: Nginx基础入门005
猜你喜欢
- 2024-09-22 Nginx从0基础到进阶实战!运维工程师必看
- 2024-09-22 Nginx基础入门002
- 2024-09-22 Nginx基础入门005
- 2024-09-22 Nginx基础入门004
- 2024-09-22 深入理解Nginx一之Nginx入门
- 2024-09-22 Nginx的入门介绍
- 2024-09-22 Nginx 入门
- 2024-09-22 最基础的Nginx教学
- 2024-09-22 入门Nginx——(前端够用,运维入门)
- 2024-09-22 如何从零开始学习Nginx?
你 发表评论:
欢迎- 最近发表
-
- java 服务之间调用(rpc)(java实现服务器)
- Java机器学习库(Java ML)(二、聚类)
- 「Java库」如何使用优秀的加密库Jasypt来保护你的敏感信息?
- GitHub精选 | 轻量级Android和Java日志库
- Java面试官:MySQL binlog 有什么作用?主从延迟的了解么?
- Excel函数核武器库:50个高频场景公式——第二弹
- Excel函数核武器库:50个高频场景公式——第一弹
- Spring Cache高性能缓存库 - Caffeine简介
- Java通过Kafka Streams库来实现数据流处理
- 一连问了好几个大佬,竟然都不知道Redis为什么默认16个数据库?
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)