代理配置
常用的配置
-
proxy_pass
URL
;Default:——
Context:location
,if in location
,limit_except
设置代理服务器的协议和地址以及应映射位置的可选URI。作为协议,可以指定“
http
”或“https
”。地址可以指定为域名或IP地址,以及可选端口如:
proxy_pass http://localhost:8000/uri/;
-
proxy_set_header
*field*
*value*
;Default:proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context:http
,server
,location
允许重新定义或者添加发往后端服务器的请求头
重要的配置方式:
http{ proxy_set_header X-real-ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
-
proxy_hide_header
field
;Default:——
Context:http
,server
,location
默认情况下,nginx不会从代理服务器对客户端的响应中传递标题字段
Date
,Server
,X-Pad
和X-Accel -...
。该proxy_hide_header
指令设置了不会传递的其他字段 即可以隐藏一些头信息不向客户端进行传递
-
proxy_buffer
size
;Default:proxy_buffer 4k | 8k;
Context:mail
,server
设置用于代理的缓冲区的大小。默认情况下,缓冲区大小等于一个内存页面。根据平台,它是4K或8K
-
proxy_buffering
on
|off
;Default:proxy_buffering on;
Context:http
,server
,location
启用或禁用来自代理服务器的响应缓冲
- 启用缓冲后,nginx会尽快从代理服务器接收响应,并将其保存到
proxy_buffer_size
和proxy_buffers
指令设置的缓冲区中 。如果整个响应不适合内存,则可以将其中的一部分保存到磁盘上的临时文件中。写入临时文件由proxy_max_temp_file_size
和proxy_temp_file_write_size
指令控制 - 禁用缓冲时,响应会在收到响应时立即同步传递给客户端。nginx不会尝试从代理服务器读取整个响应。nginx一次可以从服务器接收的数据的大小由
proxy_buffer_size
指令设置
- 启用缓冲后,nginx会尽快从代理服务器接收响应,并将其保存到
-
proxy_redirect default;
proxy_redirect off;
proxy_redirect redirect replacement;Default:proxy_redirect
default
;
Context:http
,server
,location
如果需要修改从被代理服务器传来的应答头中的"Location"和"Refresh"字段,可以用这个指令设置
-
proxy_connect_timeout
time
;Default:proxy_connect_timeout 60s;
Context:http,
server,
location定义与代理服务器建立连接的超时。应该注意,此超时通常不会超过75秒
与此类似的有
proxy_send_timeout
:设置将请求传输到代理服务器的超时。仅在两个连续的写操作之间设置超时,而不是为整个请求的传输。如果代理服务器在此时间内未收到任何内容,则关闭连接proxy_read_timout
:定义从代理服务器读取响应的超时。仅在两个连续的读操作之间设置超时,而不是为整个响应的传输。如果代理服务器在此时间内未传输任何内容,则关闭连接
http{
proxy_pass http://localhost:8080;
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
}
正向代理配置
http{
# 指定谷歌公用的DNS解析服务器
resolver 8.8.8.8;
location / {
proxy_pass http://$http_host$request_uri;
}
}
反向代理配置
http{
# location规则可随意配置
location / {
# 指所有的请求都转发到8080端口上
proxy_pass http://127.0.0.1:8080;
if ( $http_x_forward_for !~* "^116\.62\.103\.228" ) {
return 403;
}
}
}