Nginx常用模块

#提示:nginx模块分为两种,官方和第三方,我们可通过 nginx -V 查看nginx已经安装的模块!

1、ngx_http_core_module #包括一些核心的http参数配置,对应Nginx的配置为HTTP区块部分

2、ngx_http_access_module #访问控制模块,用来控制网站用户对Nginx的访问

3、ngx_http_gzip_module #压缩模块,对Nginx返回的数据压缩,属于性能优化模块

4、ngx_http_fastcgi_module #FastCGI模块,和 动态应用相关的模块,例如PHP

5、ngx_http_proxy_module #Proxy代理模块

(5.1 proxy_pass URL;
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
http://host[:port]/ 意味着: http://HOSTNAME/uri --> http://host/ 
注意:如果location定义其uri时使用了正则表达式的模式,则proxy_pass之后必须不能使用uri; 
用户请求时传递的uri将直接附加代理到的服务的之后
server {
    ...
    server_name HOSTNAME;
    location ~|~* /uri/ {
    proxy_pass http://host; 不能加/
    }
    ...
}
http://HOSTNAME/uri/ --> http://host/uri/


5.2 proxy_set_header field value;
设定发往后端主机的请求报文的请求首部的值
Context: http, server, location

后端记录日志记录真实请求服务器IP
proxy_set_header	Host	$host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
标准格式如下:
X-Forwarded-For: client1, proxy1, proxy2 
如后端是Apache服务器应更改日志格式:
%h -----> %{X-Real-IP}i


5.3 proxy_cache_path;

定义可用于proxy功能的缓存; Context:http
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];
例:proxy_cache_path /data/nginx/cache(属主要为nginx) levels=1:2 keys_zone=nginxcache:20m inactive=2m

5.4 调用缓存
在需要使用缓存的location段添加
proxy_cache nginxcache; ##nginxcache为上面自定义的缓存空间名称
指明调用的缓存,或关闭缓存机制; Context: http,server, location

5.5
proxy_cache_key string;
缓存中用于“键”的内容
默认值: proxy_cache_key $scheme$proxy_host$request_uri;

5.6
proxy_cache_valid [code ...] time;
定义对特定响应码的响应内容的缓存时长
定义在http{...}中
示例:
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m; 
示例:
在http配置定义缓存信
proxy_cache_path /var/cache/nginx/proxy_cache
levels=1:1:1 keys_zone=proxycache:20m
inactive=120s max_size=1g;
调用缓存功能,需要定义在相应的配置段,如server{...};
proxy_cache proxycache;
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 301 1h;
proxy_cache_valid any 1m;

5.7
proxy_cache_use_stale;
proxy_cache_use_stale error | timeout |
invalid_header | updating | http_500 | http_502 |
http_503 | http_504 | http_403 | http_404 | off ...
在被代理的后端服务器出现哪种情况下,可以直接使用过
期的缓存响应客户端

5.8
proxy_cache_methods GET | HEAD | POST ...;
对哪些客户端请求方法对应的响应进行缓存, GET和HEAD方法总是被缓存

5.9
proxy_hide_header field;
By default, nginx does not pass the header fields
“Date”, “Server”, “X-Pad”, and “X-Accel-...” from the
response of a proxied server to a client. 用于隐藏后端服
务器特定的响应首部

5.10
proxy_connect_timeout time;
定义与后端服务器建立连接的超时时长,如超时会出现502错误,默认为60s,一般不建议超出75s

5.11
proxy_send_timeout time;
把请求发送给后端服务器的超时时长;默认为60s

5.12
proxy_read_timeout time;
等待后端服务器发送响应报文的超时时长, 默认为60s)

6、ngx_http_upstream_module #负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查

7、ngx_http_rewrite_module #URL地址重写模块

8、ngx_http_limit_conn_module #限制用户并发连接数及请求数模块

9、ngx_http_limit_req_module #根据定义的key限制Nginx请求过程的速率

10、ngx_http_log_module #访问日志模块,以指定的格式记录Nginx客户访问日志等信息

11、ngx_http_auth_basic_module #Web认证模块,设置Web用户通过账号、密码访问Nginx

12、ngx_http_ssl_module #ssl模块,用于加密的http连接,如https

13、ngx_http_stub_status_module #记录Nginx基本访问状态信息等模块

fastcgi_pass proxy_pass 区别??

fastcgi_pass 和proxy_pass通常使用在反向代理与负载均衡技术场景
proxy_pass 在两个模块中有涉及

ngx_stream_proxy_module /ngx_http_proxy_module

相同点:都作为代理,代理后端服务分发使用

不同点:根据官方和自己理解

  1. proxy_pass 应用更广泛,支持几乎所有应用 ,fastcgi_pass 后端只能代理fastcgi服务器应用可运行的语言(php)
  2. proxy_pass 支持 ip, ip:端口,socket,uri
  3. fastcgi_pass 支持 ip, ip:端口,socket
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值