http协议相关的配置结构
http {
...
... #各server的公共配置
server { #每个server用于定义一个虚拟主机
...
}
server {
...
server_name #虚拟主机名
root #主目录
alias #路径别名
location [OPERATOR] URL { 指定URL的特性
...
if CONDITION {
...
}
}
}
}
ngx_http_index_module
模块功能
指定默认网页资源
1、index file ...;指定默认网页资源,注意:ngx_http_index_module模块
可用位置:http, server, location
示例模板:
server {
server_name www.a.com;
root /data/web3/;
location /bbs/ {
alias /web/forum/;
index index.php
} #输入http://www.a.com/web/forum/时默认打开index.php
}
ngx_http_index_module
模块 详细说明请参考官网 地址链接
ngx_http_access_module
模块功能
模块实现基于ip的访问控制功能
1、allow address | CIDR | unix: | all;
允许访问指定的网络或地址。如果指定了特殊值unix:指定(1.5.1),允许对所有unix域套接字进行访问。
可用位置:http, server, location, limit_except
2、deny address | CIDR | unix: | all;
拒绝访问指定的网络或地址。如果指定了特殊值unix:指定(1.5.1),则拒绝访问所有unix域套接字
可用位置:http, server, location, limit_except
自上而下检查,一旦匹配,将生效,条件严格的置前
示例模板:
server{
server_name www.a.com;
root /data/web3/;
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
}
ngx_http_access_module
模块 详细说明请参考官网 地址链接
ngx_http_auth_basic_module
模块功能
模块实现基于用户的访问控制,使用basic机制进行用户认证
1、auth_basic string | off;
可用位置:http, server, location, limit_except
2、auth_basic_user_file file;
可用位置:http, server, location, limit_except
示例模板:
server{
server_name www.a.com;
root /data/web3/;
location /admin/ {
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.ngxpasswd;
allow 192.18.99.1; #只能这台主机访问
deny all;
}
}
用户口令文件:
1、明文文本:格式name:password:comment
2、加密文本:由htpasswd命令实现 --> httpd-tools所提供
命令:
yum install httpd-tools #安装
htpasswd -cm /etc/nginx/.ngxpasswd admin #创建admin用户
cat /etc/nginx/.ngxpasswd #查看所创建的用户
ngx_http_auth_basic_module
模块 详细说明请参考官网 地址链接
ngx_http_stub_status_module
模块功能
模块用于输出nginx的基本状态信息
输出信息示例:
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
上面三个数字分别对应accepts,handled,requests三个值Reading: 6 Writing: 179 Waiting: 106
Active connections:当前状态,活动状态的连接数
accepts :统计总值,已经接受的客户端请求的总数
handled :统计总值,已经处理完成的客户端请求的总数
requests:统计总值,客户端发来的总的请求数
Reading :当前状态,正在读取客户端请求报文首部的连接的连接数
Writing :当前状态,正在向客户端发送响应报文过程中的连接数
Waiting :当前状态,正在等待客户端发出请求的空闲连接数
1、stub_status;
可用位置:server, location
示例模板:
server{
server_name www.a.com;
root /data/web3/;
location /status {
stub_status;
allow 172.16.0.0/16; #为了安全加ip限制
deny all;
}
}
ngx_http_stub_status_module
模块 详细说明请参考官网 地址链接
ngx_http_log_module
模块功能
指定日志格式记录请求
1、log_format name string ...;
string可以使用nginx核心模块及其它模块内嵌的变量
可用位置:http
2、access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;
访问日志文件路径,格式及相关的缓冲的配置
buffer=size
flush=time
可用位置:http, server, location, if in location, limit_except
注意:如果使用缓冲区或gzip(1.3.10,1.2.7)参数,则将对日志进行写操作。
3、open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off; #关闭缓存
可用位置:http, server, location
缓存各日志文件相关的元数据信息
max:缓存的最大文件描述符数量
min_uses:在inactive指定的时长内访问大于等于此值方可被当作活动项
inactive:非活动时长
valid:验证缓存中各缓存项是否为活动项的时间间隔
示例模板:
http{
log_format compression '$remote_addr-$remote_user [$time_local] '
'"$request" $status $bytes_sent'
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log /spool/logs/nginx-access.log compression buffer=32k;
}
ngx_http_log_module
模块 详细说明请参考官网 地址链接
ngx_http_referer_module
模块功能
用来阻止Referer首部无有效值的请求访问,可防止盗链
1、valid_referers none|blocked|server_names|string...;
定义referer首部的合法可用值,不能匹配的将是非法值
none:请求报文首部没有referer首部
blocked:请求报文有referer首部,但无有效值
server_names:参数,其可以有值作为主机名或主机名模式
arbitrary_string:任意字符串,但可使用*作通配符
regular expression:被指定的正则表达式模式匹配到的字符串,要使用~开头,例如:~.*\.magedu\.com
可用位置:server, location
示例模板:
valid_referers none block server_names *.a.com a.* ~\.a\.;
if ($invalid_referer) {
return 403 http://www.a.com;
}
ngx_http_referer_module
模块 详细说明请参考官网 地址链接
ngx_http_headers_module
模块功能
模块向由代理服务器响应给客户端的响应报文添加自定义首部,或修改指定首部的值
1、add_header name value [always];
添加自定义首部
add_header X-Via $server_addr;
add_header X-Cache $upstream_cache_status;
add_header X-Accel $server_name;
可用位置:http, server, location, if in location
2、add_trailer name value [always];
添加自定义响应信息的尾部
可用位置:http, server, location, if in location
ngx_http_headers_module
模块 详细说明请参考官网 地址链接
ngx_stream_core_module
-
nginx的其它的二次发行版:
-
Tengine:由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。从2011年12月开始,Tengine成为一个开源项目,官网http://tengine.taobao.org/
OpenResty:基于Nginx 与Lua语言的高性能Web 平台
模块功能
模拟反代基于tcp或udp的服务连接,即工作于传输层的反代或调度器
1、stream { ... }
定义stream相关的服务;
可用位置:main
stream {
upstream mysqlsrvs{
server 192.168.22.2:3306;
server 192.168.22.3:3306;
least_conn;
}
server {
listen 10.1.0.6:3306;
proxy_pass mysqlsrvs;
}
}
2、listen
listen address:port [ssl] [udp] [proxy_protocol] [backlog=number] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
可用位置:server
ngx_stream_core_module
模块 详细说明请参考官网 地址链接
ngx_stream_proxy_module
模块功能
可实现代理基于TCP,UDP (1.9.13), UNIX-domain sockets的数据流
1、proxy_pass address;
指定后端服务器地址
可用位置:server
2、proxy_timeout timeout;
无数据传输时,保持连接状态的超时时长 默认为10m
可用位置:stream, server
3、proxy_connect_timeout time;
设置nginx与被代理的服务器尝试建立连接的超时时长默认为60s
可用位置:stream, server
示例:
stream {
upstream mysqlsrvs {
server 192.168.0.10:3306;
server 192.168.0.11:3306;
hash $remote_addr consistent;
}
server {
listen 172.16.100.100:3306;
proxy_pass mysqlsrvs;
proxy_timeout 60s;
proxy_connect_timeout 10s;
}
}
ngx_stream_proxy_module
模块 详细说明请参考官网 地址链接