Nginx的代理配置(六)
一、正向代理
1. 指令说明
(1) resolver
这个用于设置DNS服务器的ip 。DNS服务器的主要工作是进行域名解析,将域名映射为对应IP地址。
语法:resolver address ... [valid = time ]
address DNS 服务器的ip地址, 不指定的话默认53
time 设置数据包在网络中的有效时间.
例: resolver 127.0.0.1 [::1]:52113 valids
resolver_timeout
设置DNS服务器域名解析超时时间
语法: resolver_timeout time;
proxy_pass
设置代理服务器的协议和地址。
语法:proxy_pass URL
URL 为设置的代理服务器协议和地址
2. 正向代理配置示例
server { resolver 114.114.114.114; #指定DNS服务器IP地址
listen 80;
location / { proxy_pass http://$host$request_uri; #设定代理服务器的协议和地址
proxy_set_header HOST $host;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_next_upstream error timeout invalid_header http_502;
}
} server {
resolver 114.114.114.114; #指定DNS服务器IP地址
listen 443;
location / {
proxy_pass https://$host$request_uri; #设定代理服务器的协议和地址
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_next_upstream error timeout invalid_header http_502;
}
}
二、反向代理
1. 指令说明
基本指令:
(1) proxy_pass
设置代理服务器的协议和地址。
语法:proxy_pass URL
(2) proxy_hide_header
用于设置Nginx服务器发送http相应时,隐藏一些头域信息。
语法:proxy_hide_header field;
field 为需要隐藏的头域. 可以用于 http server localtion。
(3) proxy_pass_header
默认Nginx 服务器在发送响应报文时,报文不包含 date server X-accel 等来自被代理服务器的头域信息,该指令可以设置这些头域信息已被发送。
语法:proxy_pass_header filed;
(4) proxy_pass_request_body
配置是否将客户端请求体发送给代理服务器。
语法:proxy_pass_request_body on | off
可以用于 http server localtion。
(5) proxy_pass_request_header
配置是否将客户端的请求头发送给代理服务器。
(6) proxy_set_header
用于更改Nginx服务器接收到的客户端请求的请求头,然后将新的请求头发送给被代理服务器。
语法:proxy_set_header filed value
field 要更改的信息所在的头域
value 更改的值
(7) proxy_set_body
更改Nginx服务器接收到的客户端请求的请求体信息,然后将新的请求体发送给被代理的服务器。
语法:proxy_set_body value
value 为更改的信息
(8) proxy_bind
强制将与代理主机的连接绑定到指定的ip主机。
语法:proxy_bind address
address 为IP地址
(9) proxy_connect_timout
用于配置Nginx服务器与后端被代理服务器尝试连接的超时时间。
语法:proxy_connect_timout time
默认时间时60秒
(10) proxy_read_timeout
用于配置Nginx服务器向后端被代理服务器(组)发出read请求后,等待响应的超时时间。
语法:proxy_read_timeout time;
默认时间时60秒
(11) proxy_send_timeout
用于配置Nginx服务器向后端被代理服务器(组)发出write请求后,等待响应的超时时间。
语法:proxy_send_timeout time;
默认时间时60秒
(12) proxy_http_version
用于设置Nginx服务器提供代理服务器的HTTP协议版本。
proxy_http_version 1.0
可选值有1.0、1.1、2.0,默认是1.0
(13) proxy_method
用于设置Nginx服务器请求代理服务器使用的请求方法,设置了这个客户端的请求方法将会被忽略
语法:proxy_method method
method 设置 POST | GET
(14) proxy_ignore_client_abort
用于设置在客户端中断网络请求的时候,Nginx服务器是否中断对被代理服务器的请求。
语法:proxy_ignore_client_abort on | off
(15) proxy_ignore_headers
用于设置一些HTTP相应头的头域。
语法:proxy_ignore_headers filed ...
filed 为要设置的HTTP相应头的头域信息,例如"X-Accel-Redirect" "X-Accel-Expires" "Expores " "Cache-Control " "Set-Cookie"
(16) proxy_headers_hash_max_size
存放HTTP报文头的哈希表的容量。
语法:proxy_headers_hash_max_size size;
默认大小512
(17) proxy_headers_hash_bucket_size
Nginx服务器申请存放HTTP报文头的哈希表容量的单位大小。
语法:proxy_headers_hash_max_size 64;
(18) proxy_next_upstream
如果Nginx定义了 upstream 后端服务器组,如果组内有异常情况,将请求顺次交给下一个组内服务器处理。
语法:proxy_next_upstream status..
status: error,timeout,invalid_header,http_500 502 503 504 404,off
(19) proxy_ssl_session_reuse
该指令用于配置是否使用基于SSL安全协议的会话连接(htts://)被代理服务器。
语法:proxy_ssl_session_reuse on | off;
默认on
Proxy Buffer 指令
(20) proxy_buffering
用于配置是否启用或者关闭proxybuff。
语法:proxy_buffering on | off
(21) proxy_buffers
用于配置接收一次被代理服务器响应数据的Proxy Buffer个数和每个Buffer的大小。
语法:proxy_buffers number size;
size一般设置为内存页大小。根据平台的不同,取值可能为4KB或者8KB
proxy_buffers 8 4KB|8KB;
(22) proxy_buffer_size
用于配置从被代理服务器获取的第一部分响应数据的大小,默认为4k或者8k,保持与proxy_buffers指令中的size变量相同。
(23) proxy_busy_buffers_size
用于限制同时处于BUSY状态的Proxy Buffer的总大小。
语法:proxy_busy_buffers_size size;
size为设置处于BUSY状态的缓存区总大小。默认为8KB或者16KB。
(24) proxy_temp_path
用于配置磁盘上的一个文件路径,用于临时存放被代理服务器的大体积响应数据。如果Proxy Buffer被装满后,响应数据仍然没有被Nginx服务器完全接收,之后响应的数据就会被临时存放在该文件中。语法结构为:
语法:proxy_temp_path path [level1 [level2 [level3]]]
path 磁盘上临时存放文件的路径
levelN 缓存文件存放在设置的路径的第几级hash目录中
(25) proxy_max_temp_file_size
用于设置所有临时文件的总大小。
语法:proxy_max_temp_file_size size;
默认是1024M;
(26) proxy_temp_file_write_size
用于配置同时写入临时文件的数据量的总大小。
语法:proxy_temp_file_write_size size;
默认设置根据平台的不同,可以为8KB或者16KB,一般与平台的内存也大小相同。
Proxy Cache指令
(27) proxy_cache
用于配置一块公用的内存区域的名称,该区域可以存放缓存的索引数据.这些数据在Nginx服务器启动时由缓存索引重建进程负责建立,在Nginx服务器的整个运行过程中由缓存管理进程负责定时检查过期数据、检索等管理工作.语法结构为:
语法:proxy_cache zone | off;
zone 设置用于存放缓存索引的内存区域的名称
off 关闭proxy_cache功能,默认设置
(28) proxy_cache_bypass
用于配置Nginx在响应客户端时不从缓存中获取数据的条件。语法结构为:
语法: proxy_cache_bypass string ...;
其中,string为条件变量,支持配置多个,当至少有一个字符串指令不为空或者不等于0时,响应数据不从缓存中获取。
举例:proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment $http_pragma $http_authorization;
(29) proxy_cache_key
用于配置Nginx服务器在内存中为缓存数据建立索引时使用的关键字。
(30) proxy_cache_lock_timeout
用于配置开启锁功能以后锁的超时时间,默认为5s。
(31) proxy_cache_in_uses
当客户端向被代理的服务器发送相同的请求达到该指令设定的次数后,Nginx服务器才对该其更年期的响应数据做缓存,默认为1。
(32) proxy_cache_path
用于设置Nginx服务器存储缓存数据的路径以及和缓存索引相关的内容,语法结构为:
语法:proxy_cache_path path [levels=levels] keys_zone=name:size1 [inactive=time1] [max_size=size2] [loader_files=number] [loader_sleep=time2] [loader_threshold=time3];
path 设置缓存存放的根路径
levels 设置相对于path指定目录的第几级hash目录中缓存数据.levels=1,表示一级hash目录;levels=1:2,表示两极目录,以此类推.该目录是基于请求URL通过哈希算法得到的.
name:size1 Nginx服务器的缓存索引重建进程在内存中为缓存数据建立索引,这一对变量用来设置存放缓存索引的内存区域的名称和大小.
time1 设置强制更新缓存数据的时间,当缓存数据在设定的时间内没有被访问时,Nginx服务器就强制从硬盘上将其删除,下次客户端访问该数据时重新缓存.默认为10s.
size2 设置缓存数据大小.当缓存的大小超过该变量的设置时,索引管理进程将根据最近最少被访问的策略删除缓存.
number 设置缓存索引重建进程每次加载的数据元素的数量上限.默认为100
time2 设置缓存索引重建进程在一次遍历结束后下一次遍历开始之间暂停的时长,默认为50ms.
time3 设置遍历一次磁盘缓存源数据的时间上限.默认为200ms.
指令比较复杂,一般需要设置前面3个指令的情形比较多,后面几个变量与Nginx服务器缓存索引重建进程以及管理进程性能有关,一般情况下保持默认设置就可以了。
proxy_cache_path /data/nginx/cache/a levels=1 keys_zone=a:10m;
proxy_cache_path /data/nginx/cache/b levels=2:2 keys_zone=b:100m;
proxy_cache_path /data/nginx/cache/c levels=1:1:2 keys_zone=c:1000m;
注:该指令只能放在http块中。
(33) proxy_cache_use_stale
指定在哪种情况下,当被代理的服务器无法访问或者访问错误等现象时,Nginx服务器可以使用历史缓存响应客户端的请求。
语法:proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | off ...;
默认为off。
(34) proxy_cache_valid
该指令可以针对不能的HTTP响应状态设置不同的缓存时间。
语法:proxy_cache_valid [code ...] time;
code 设置HTTP响应的状态码,可选,默认只为响应吗是200 301 302的响应数据做缓存.可以使用 ‘any’ 表示缓存所有该指令中未设定的其他响应数据
time 缓存时间
举例:
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 10m; # 第三个例子表示对返回状态为不是200 301 302的响应数据缓存10分钟.
(35) proxy_no_cache
配置在什么情况下不使用cache功能。
语法:proxy_no_cache string ...;
其中,string可以是一个或者多个变量,当string的值不为空或者不为’0’时,不启用cache功能。
(36) proxy_store
配置是否在本地磁盘缓存来自被代理服务器的响应数据。
语法:proxy_store on | off | string;
on | off 设置是否开启Proxy Store功能.如果开启,缓存文件会存放到alias指令或root指令设置的本地路径.默认为off
string 自定义缓存文件存放路径.使用该配置时,默认开启Proxy Store。
(37) proxy_store_access
用于设置用户或用户组对Proxy Store缓存文件的访问权限。
语法:proxy_store_access users:permissions ...;
users 可以设置为user、group或者all
permission 设置方位权限
举例:
proxy_store on;
proxy_store_access user:rw group:rw all:r;
root /data/www;
2. 反向代理配置示例
upstream test {
server 192.168.10.20;
} server {
listen 80;
server_name 192.168.10.20;
index index.html index.htm;
location / {
proxy_pass http://test;
}
}
Nginx的代理配置(六)的更多相关文章
- nginx反向代理配置及优化
nginx反向代理配置及优化前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反 ...
- nginx反向代理配置实例分享
nginx反向代理配置一例. 配置内容如下: user www www; worker_processes 8; error_log /usr/local/webserver/nginx/logs/n ...
- nginx 正向代理配置
需求场景:从以下俩张图可以比较直观的理解正向代理的作用(在其他文章中会表示为“http代理”,注意当前文档的配置不支持https代理) Nginx正向代理配置文件: server{ listen de ...
- nginx 反向代理配置(一)
文章参考:https://blog.csdn.net/physicsdandan/article/details/45667357 什么是代理? 代理在普通生活中的意义就是本来 ...
- 使用python自动生成docker nginx反向代理配置
由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...
- nginx常用代理配置
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试过程中,简单总结了一下常见的nginx代理配置. 1. 最简反向代理配置 在http节点下,使用upstream配置服务地址,使用ser ...
- Nginx反向代理配置可跨域
由于业务需要,同一项目中的前端代码放在静态环境中,而后端代码放在tomcat中,但此时问题却出现了:前端使用ajax请求后端获取数据时出现如下报错 XMLHttpRequest cannot load ...
- Nginx反向代理配置配置实例
为了节省支出,公司需要将分布在不同机器的站点都迁移到一台机器,而目前不同机器运行的是不同的web服务,部分是nginx,部分是apache,由于牵涉较多rewrite规则,为了节省修改功夫,打算迁移后 ...
- Linux 下的 Nginx 反向代理配置.
最近实践中遇到了需要利用 nginx 进行反向代理服务器请求的需求,以前没怎么碰触过,因此花了1个多小时,快速阅览了一下nginx官网在反向代理服务中给出的基本定义: 说实话,官网给予的定义是精准的, ...
随机推荐
- P1验证性内容
#include<stdio.h> int main() { printf("201983270555"); return 0; } #include<stdio ...
- JDK的小Bug你了解么?
用了这么长时间的JDK了,有没有老铁发现JDK的bug呢?从最早版本的JDK1.2到现在普及开的JDK1.8以来,JAVA经历了这么多年的风风雨雨,依然坚持在一线上,是不是感觉很神奇,但是,有没有多 ...
- RPC系列:基本概念
RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想. RPC 是一种技术思想而非一种规范或协议,常见 RPC ...
- java 常见高级开发面试题 非算法等特定岗 一
基础1.List和Set区别 List:1.可以允许重复的对象. 2.可以插入多个null元素. 3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序. 4.常用的实现类有 Arra ...
- 与某军工背景软件企业分享Azure DevOps Server的经验
DevOps 是英文单词Development和Operations的组合词,是一种用于促进软件开发.运维实施和质量保障部门之间协同工作的过程和方法. 结合软件开发管理规范,应用自动化的构建.测试和发 ...
- 【Linux命令】Linux压缩及解压命令
Linux压缩及解压命令 一.文件打包和压缩命令介绍 linux系统文件压缩格式,常用的有*.tar.gz.*.gz.*.zip.*.tar,还有*.rar..7z..bz2..tar.xz..tar ...
- Spring、SpringMVC、Hibernate整合 ----超详细教程
一.数据库表 /* Navicat MySQL Data Transfer Source Server : 本地连接 Source Server Version : 50720 Source Host ...
- .Net轻松处理亿级数据--clickhouse及可视化界面安装介绍
该篇内容由个人博客点击跳转同步更新!转载请注明出处! 前言 我是在17年就听说过Clickhouse,那时还未接触过亿数据的运算,那时我在的小公司对于千万数据的解决方案还停留在分库分表,最好的也是使用 ...
- 云原生生态周报 Vol. 14 | K8s CVE 修复指南
业界要闻 Mesosphere 公司正式更名为 D2IQ, 关注云原生. Mesosophere 公司日前发布官方声明正式更名为:D2iQ(Day-Two-I-Q),称关注点转向 Kubernetes ...
- TinyMCE编辑器图片上传扩展(base64方式),asp.net mvc5
编辑器上传图片一般都是先上传到服务器中,若是用户取消或忘记提交表单就产生一张废图在空间里面,时间一长就产生大量占用空间的无用图片,现在就试试提交前先用base64,提交后,在后台处理编辑器内容中的&l ...