Nginx 配置
1.配置文件语法格式
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /nginx_status {
stub_status on;
access_log off;
}
}
}
上述配置中的events、http、server、location、upstream 等属于配置项块。而worker_processes 、worker_connections、include、listen 属于配置项块中的属性。 /nginx_status 属于配置块的特定参数参数。其中 server 块嵌套于 http块,其可以直接继承访问 Http 块当中的参数。
配置块 | 名称开头用大口号包裹其对应属性 |
---|---|
属性 | 基于空格切分属性名与属性值,属性值可能有多个项都以空格进行切分如: access_log logs/host.access.log main |
参数 | 其配置在块名称与大括号间,其值如果有多个也是通过空格进行拆分 |
注意:如果配置项值中包括语法符号,比如空格符,那么需要使用单引号或双引号括住配置项值,否则 Nginx 会报语法错误。例如:
log_format main '$remote_addr - $remote_user [$time_local] "$request"'
'$status $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"';
2.配置一个静态的web服务
server {
listen 80;
server_name localhost;
location / {
root /usr/local/test/html;
index index.html;
}
}
(1)监听端口
语法:listen address:
默认:listen 80;
配置块:server
(2)主机名称
语法:server_name name[……];
默认:server_name “”;
配置块:server
server_name 后可以跟多个主机名称,支持通配符与正则,如:
server_name www.testweb.com download.testweb.com;
(3)location
语法:location[=|~|~*|^~|@]/uri/{……}
配置块:server
1.=表示把 URI 作为字符串,以便与参数中的 uri 做完全匹配。
2./ 基于 uri 目录匹配
3.~表示正则匹配 URI 时是字母大小写敏感的。
4.~*表示正则匹配 URI 时忽略字母大小写问题。
5.^~表示正则匹配 URI 时只需要其前半部分与 uri 参数匹配即可。
匹配优先规则:
1.精确匹配优先 =
2.正则匹配优先 ^~
3.前缀最大匹配优先。
4.配置靠前优化
**(4)root 指定站点根目录 **
可配置在 server 与 location 中,基于 ROOT 路径+URL 中路径去寻找指定文件。
(5)alias 指定站点别名
只能配置 location 中。基于 alias 路径+ URL 移除 location 前缀后的路径来寻找文件。
如下示例:location /V1 { alias /www/old_site; index index.html index.htm; }
访问规则如下:
URL:http://xxx:xx/V1/a.html
最终寻址:/www/old_site/a.thml
3.基于目录动静分离
server {
listen 80;
server_name *.test.com;
root /usr/www/test;
location / {
index index.html;
}
location /static {
alias /usr/www/static;
}
}
4.基于正则的动静分离
location ~* \.(gif|jpg|png|css|js)$ {
root /usr/www/static;
}
5.防盗链配置
# 加入至指定 location 即可实现
location / {
index index.html
valid_referers none blocked *.test.com;
if ($invalid_referer) {
return 403;
}
}
7.下载限速
location /download {
limit_rate 1m; // 限制每S下载速度
limit_rate_after 30m; // 超过30之后在下载
}
8.创建IP黑名单
# 封禁指定 IP
deny 192.168.0.1;
allow 192.168.0.1;
# 开放指定 IP 段
allow 192.168.0.0/24;
#开放指定 IP 段
allow 192.168.0.0/24;
# 封禁所有
deny all;
# 开放所有
allow all;
# 创建黑名单文件
echo 'deny 192.168.0.132;' >> balck.ip
# http配置块中引入黑名单文件
include black.ip;
9.日志配置
语法:error_log /path/file level;
默认:error_log logs/error.log error;
level 是日志的输出级别,取值范围是 debug、info、notice、warn、error、crit、alert、emerg,
针对指定的客户端输出 debug 级别的日志
语法:debug_connection[IP|CIDR]
events {
debug_connection 192.168.0.147;
debug_connection 10.224.57.0/200;
}
注意:debug 日志开启 必须在安装时 添加 --with-debug (允许 debug)
nginx.conf