Nginx反代配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx反代配置相关的知识,希望对你有一定的参考价值。
目录
ngx_http_proxy_module模块
ngx_http_headers_module模块
ngx_http_upstream_module模块
ngx_stream_core_module模块
ngx_http_proxy_module模块
ngx_http_proxy_module模块允许传递请求到另一个服务器,实现反向反向代理
1、proxy_pass
设置一个代理服务器的地址,协议,和一个可选的URI的位置应该映射。作为一个协议,“HTTP”或“https”可以指定。地址可以被指定为一个域名或IP地址,和一个可选的端口
语法:roxy_pass URL;
Default: proxy_cache off
Context: location, if in location, limit_except注意:proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机;
server {
…
server_name HOSTNAME;
location /uri/ {
proxy_pass http://host[:port];
}
…
}http://HOSTNAME/uri –> http://host/uri
proxy_pass后面的路径是一个uri时,其会将location的uri替换为proxy_pass的uri;
server {
…
server_name HOSTNAME;
location /uri/ {
proxy_pass http://host/new_uri/;
}
…
}http://HOSTNAME/uri/ –> http://host/new_uri/
如果location定义其uri时使用了正则表达式的模式,则proxy_pass之后必须不能使用uri; 用户请求时传递的uri将直接附加代理到的服务的之后;
server {
…
server_name HOSTNAME;
location ~|~* /uri/ {
proxy_pass http://host;
}
…
}
2、proxy_set_header
设定发往后端主机的请求报文的请求首部的值
语法:proxy_set_header field value;
Default: proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context: http, server, locationproxy_set_header X-Real-IPproxy_add_x_forwarded_for;
3、proxy_cache_path
定义可用于proxy功能的缓存
语法:proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
Context: http
4、proxy_cache
指明要调用的缓存,或关闭缓存机制
语法:proxy_cache zone | off;
Default: proxy_cache off;
Context: http, server, location
5、proxy_cache_key
缓存中用于“键”的内容;
语法:proxy_cache_key string;
默认值:proxy_cache_key proxy_host$request_uri;
Context: http, server, location
6、proxy_cache_valid
定义对特定响应码的响应内容的缓存时长;
语法:proxy_cache_valid [code …] time;
Default: —
Context: http, server, location定义在http{…}中;
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:1:1 keys_zone=pxycache:20m max_size=1g;定义在需要调用缓存功能的配置段,例如server{…};
proxy_cache pxycache;
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 301 1h;
proxy_cache_valid any 1m;
7、proxy_cache_use_stale
不确定缓存的响应可以用代理服务器的通信过程中出现错误时,使用该指令的参数匹配的proxy_next_upstream指令的参数
语法:proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | off …;
Default: proxy_cache_use_stale off;
Context: http, server, location
8、proxy_cache_methods
如果客户端请求方法在这个指令中列出,那么响应将被缓存。“获取”和“头”的方法总是添加到列表中,虽然建议明确指定它们。又见proxy_no_cache指令。
语法:proxy_cache_methods GET | HEAD | POST …;
Default: proxy_cache_methods GET HEAD;
Context: http, server, location
9、proxy_hide_header
隐藏所定义的首部,用户不可见
语法:proxy_hide_header field;
Default: —
Context: http, server, location
10、proxy_connect_timeout
定义了用于建立与代理服务器连接超时,这个超时通常不能超过75秒。
默认60s语法:proxy_connect_timeout time;
Default: proxy_connect_timeout 60s;
Context: http, server, location
11、proxy_buffers
集数和用于从代理服务器读取响应缓冲区的大小,为一个单一的连接。默认情况下,缓冲区大小等于一个内存页,4K或8K
语法:proxy_buffers number size;
Default: proxy_buffers 8 4k|8k;
Context: http, server, location
ngx_http_headers_module模块
ngx_http_headers_module模块允许添加“过期”和“缓存控制头字段,和任意的领域,一个响应头。
向由代理服务器响应给客户端的响应报文添加自定义首部,或修改指定首部的值;
1、add_header
添加自定义首部;
语法:add_header name value [always];
Default: —
Context: http, server, location, if in location
add_header X-Via server_name;
2、expires
用于定义Expire或Cache-Control首部的值;
语法:expires [modified] time;
expires epoch | max | off;
Default: expires off;
Context: http, server, location, if in location
ngx_http_upstream_module模块
ngx_http_upstream_module模块用于定义服务器可以通过proxy_pass,fastcgi_pass,uwsgi_pass,scgi_pass参照组,和memcached_pass指令。
1、upstream
定义一组服务器。服务器可以在不同的端口上监听。此外,服务器监听TCP和Unix域套接字可以混合。
语法:upstream name { … }
Context: httpupstream httpdsrvs {
server …
server…
…
}
2、server
在upstream上下文中server成员,以及相关的参数;Context: upstream
语法:server address [parameters];
address的表示格式:
unix:/PATH/TO/SOME_SOCK_FILE
IP[:PORT]
HOSTNAME[:PORT]
parameters:
weight=number
权重,默认为1;
max_fails=number
失败尝试最大次数;超出此处指定的次数时,server将被标记为不可用;
fail_timeout=time
设置将服务器标记为不可用状态的超时时长;
max_conns
当前的服务器的最大并发连接数;
backup
将服务器标记为“备用”,即所有服务器均不可用时此服务器才启用;
down
标记为“不可用”;
3、least_conn
最少连接调度算法,当server拥有不同的权重时其为wlc; 只适用于upstream段当中
4、 ip_hash
源地址hash调度方法;只适用于upstream当中
5、hash
基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本、变量或二者的组合;只适用于upstream段当中
作用:将请求分类,同一类请求将发往同一个upstream server;语法:hash key [consistent];
示例:
hash remote_addr;
6、keepalive
为每个worker进程保留的空闲的长连接数量;只适用于upstream段当中
ngx_stream_core_module模块
模拟反代基于tcp或udp的服务连接,即工作于传输层的反代或调度器;
1、stream
定义stream相关的服务;需要定义在main段当中
stream {
upstream sshsrvs {
server 192.168.22.2:22;
server 192.168.22.3:22;
least_conn;
}server {
listen 10.1.0.6:22022;
proxy_pass sshsrvs;
}
}
2、listen
所监听的地址端口
listen address:port [ssl] [udp] [proxy_protocol] [backlog=number] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
以上是关于Nginx反代配置的主要内容,如果未能解决你的问题,请参考以下文章