Nginx中ngx_http_proxy_module模块

该模块允许将请求传递给另?一台服务器?
指令:
1 ,proxy_pass
设置代理理服务器?的协议和地址以及应映射位置的可
选 URI 。作为协议,可以指定“ http 或 https 。可
以将地址指定为域名或IP地址,以及可选端?口
Syntax: proxy_pass URL;
Default: —
Context: location, if in location,
limit_except
如果 proxy_pass 后?面指定了了 uri ,则其会
将 location 指定的 uri 给替换掉
location /bbs/ {
proxy_pass http://192.168.0.1/fo
rum/
}
客户端访问:http://www.a.com/bbs/
代理理服务器?:http://192.168.0.1/forum/
如果 proxy_pass 后?面没有指定 uri ,则会
将 location 指定的 uri 附加 proxy_pass 后?面
location /bbs/ {
proxy_pass http://192.168.0.1 #
如果是附加,地址最后?面不不要写"/"符号
}
客户端访问:http://www.a.com/bbs/
代理理服务器?:http://192.168.0.1/bbs/
动静分离
server {
listen 80 ;
server_name www.a.com ;
root /data/web1/ ;
location / {
proxy_pass http://192.168.0.
1 ;
}
location ~*\.php$ {
proxy_pass http://192.168.0.
1 ;
}
}
2, proxy_set_header
设定发往后端主机的请求报?文的请求?首部的值
Syntax: proxy_set_header field
value;
Default:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context: http, server, location
设置后端服务器?得到是真实的客服端IP,如果要在
后端服务器??日志中看到客户端IP,还需要调整后端
服务器?的?日志格式
location / {
proxy_pass http://192.168.0.1 ;
proxy_set_header X-Real-IP $remo
te_addr ; # "X-Real-IP"是?一个?自定义名

}
3, proxy_cache_path
设置缓存的路路径和其他参数。缓存数据存储在?文件
中,缓存中的?文件名是将MD5功能应?用于缓存键的
结果。该 levels 参数定义?高速缓存的层次结构级
别:从1到3,每个级别接受值1或2
Syntax: 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];
Default: —
Context: http
proxy_cache_path /data/nginx/cache l
evels = 1:2 keys_zone = one:10m;
缓存中的?文件名如下所示:
/data/nginx/cache/c/29/b7f54b2df7773
722d382f4809d650 29c
4, proxy_cache
指明调?用的缓存,或关闭缓存机制
Syntax: proxy_cache zone | off;
Default: proxy_cache off;
Context: http, server, location
5, proxy_cache_key
定义缓存的键,也就对谁做MD5哈希来得到缓存?文
件的名
Syntax: proxy_cache_key string;
Default: proxy_cache_key
$scheme$proxy_host$request_uri;
Context: http, server, location
6, proxy_cache_valid
对特定响应码的响应内容的缓存时?长定义
在 http{...} 中
Syntax: proxy_cache_valid [code ...]
time;
Default: —
Context: http, server, location
7, proxy_cache_use_stale
在被代理理的后端服务器?出现哪种情况下,可以真接
使?用过期的缓存响应客户端
Syntax: proxy_cache_use_stale error |
timeout | invalid_header | updating |
http_500 | http_502 | http_503 |
http_504 | http_403 | http_404 |
http_429 | off ...;
Default: proxy_cache_use_stale off;
Context: http, server, location
8, proxy_cache_methods
对哪些客户端请求?方法对应的响应进?行行缓存, GET
和 HEAD ?方法总是被缓存
Syntax: proxy_cache_methods GET |
HEAD | POST ...;
Default: proxy_cache_methods GET
HEAD;
Context: http, server, location
9, proxy_hide_header
默认nginx响应报?文时,不不传递后端服务器?的?首部字
段 Date , Server , X-Pad , X-Accel-等 ,?用于
隐藏后端服务器?特定的响应?首部
Syntax: proxy_hide_header field;
Default: —
Context: http, server, location
10, proxy_connect_timeout
定义与后端服务器?建?立连接的超时时?长,如超时会
出现 502 错误,默认为60s,?一般不不建议超出75s
Syntax: proxy_connect_timeout time;
Default: proxy_connect_timeout 60s;
Context: http, server, location
11, proxy_send_timeout
将请求发送给后端服务器?的超时时?长;默认为60s
Syntax: proxy_send_timeout time;
Default: proxy_send_timeout 60s;
Context: http, server, location
12, proxy_read_timeout
等待后端服务器?发送响应报?文的超时时?长, 默认为
60s
Syntax: proxy_read_timeout time;
Default: proxy_read_timeout 60s;
Context: http, server, location
定义缓存:
http{
proxy_cache_path /var/cache/ngin
x/proxy_cache levels=1:1:1 keys_zone
=proxycache:20m inactive=120s max_si
ze=1g;
}
调?用缓存功能:
proxy_cache proxycache;
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 301 1h;
proxy_cache_valid any 1m;

原文地址:https://www.cnblogs.com/momenglin/p/11107953.html

时间: 2024-10-10 04:21:19

Nginx中ngx_http_proxy_module模块的相关文章

Nginx中gzip_static模块

在nginx中打开gzip压缩: gzip  on; gzip_min_length  1024; gzip_buffers     4 8k; gzip_types       text/plain application/x-javascript text/css text/html application/xml; 一般情况,需要设置一下gzip_min_length的值,建议设置成大于1k的字节数,小于1k可能会越压越大. 即: gzip_min_length 1024 gzip_typ

Nginx 中 HTTP模块初始化

概述 在前面的文章< Nginx 配置解析>简单讲解了通用模块的配置项解析,并且大概讲解了HTTP 模块的配置项解析过程,本文更具体的分析 HTTP 模块的初始化过程.HTTP 模块初始化过程主要有:上下文结构初始化.配置项解析.配置项合并.server 相关端口设置. HTTP 模块接口 ngx_http_module_t 结构体 在 Nginx 中,结构体 ngx_module_t 是 Nginx 模块最基本的接口.对于每一种不同类型的模块,都有一个具体的结构体来描述这一类模块的通用接口.

nginx中upstream模块的简单示例

本文所指的upstream是nginx的http模块中的内容对nginx来说,upstream可以在nginx上将后端服务器定义为服务器组,将不同后端不同的服务器划分为不同的组,再经过不同组内的调度算法实现负载均衡.和缓存设置类似,upstream需要先在http下定义,再被调用,方可正常使用.示例: http { -- upstream webserver { #定义名为webserver的组 server 192.168.1.111:80; server 192.168.1.222:80;

nginx中ngx_http_core_module模块

http核?心模块指令:套接字相关的配置3.1 server{ }设置虚拟服务器?的配置Syntax: server { ... }Default: —Context: httpserver {listen address[:PORT]|PORT;server_name SERVER_NAME;root /PATH/TO/DOCUMENT_ROOT;}3.2 server_name设置虚拟服务器?的名称Syntax: server_name name ...;Default: server_na

Nginx中ngx_http_upstream_module模块

用于将多个服务器?定义成服务器?组,?而由 proxy_pass , fastcgi_pass 等指令进?行行引?用upstream backend {server backend1.example.comweight=5;server backend2.example.com:8080;server unix:/tmp/backend3;server backup1.example.com:8080backup;server backup2.example.com:8080backup;}se

nginx中ngx_http_access_module模块

实现基于IP的访问控制功能指令:4.1 allow允许访问指定的?网络或地址Syntax: allow address | CIDR | unix:| all;Default: —Context: http, server, location,limit_except4.2 deny拒绝访问指定的?网络或地址Syntax: deny address | CIDR | unix: |all;Default: —Context: http, server, location,limit_except

nginx中lua脚本输出

在nginx中嵌入lua模块,能够使得nginx服务端的开发大大地方便,尤其是在实现一些额外的统计等小功能的时候.在nginx模块中直接lua嵌入脚本文件,可以直接使用nginx中lua模块的一些函数直接返回数据.可以调用的函数如下:ngx.say(),ngx.print(),return ,ngx.exit()等等,下面介绍一下这些函数的区别: (1)ngx.say()函数是返回该函数的参数加换行的数据,例如ngx.say("hello"),则返回数据hello/r/n, (2)ng

nginx中SSI问题的研究

最近感觉挺爽的,这个项目团队没有一个专门做PHP的,我是第一个进来做PHP(当然还有前端)的,哈哈,我会设计修改出适合我们业务的PHP框架,哈哈,感觉会学到很多东西的样子,前几天在组内20几个前辈面前讲php框架,以及跟大牛们探讨适合我们的php框架,感觉表达能力太差了,知道的东西表达不清楚,还要我的导师去帮我表达,这里感谢下我的导师于洪磊(简称磊哥),磊哥简直就是我的偶像,我没见过那么有深度的程序员,技术牛B这是肯定的了,对技术外的了解超出了我的想象,磊哥看的书很多,涉猎很广泛,尤其在历史和文

nginx中使用perl模块

转载自:http://www.netingcn.com/nginx-perl.html 如果对于一个绝大部分内容是静态的网站,只有极少数的地方需要动态显示,碰巧你又了解一点perl知识,那么nginx + perl的结合就能很好解决问题.要想nginx支持perl脚本,在编译nginx时候需要如下参数: ./configure --with-http_perl_module 如果make时候出现如下类似错误: Can't locate ExtUtils/Embed.pm in @INC (@IN