首页 > nginx > nginx配置即文件结构

nginx配置即文件结构

作者:bin
目录
[隐藏]

首先先理解文件的结构:

mian=>event

main=>event=>http=>server=>location

从右往左以此继承,如main中配置就为全局配置;

然后才是每个节点的属性:

1、main:

user :指定nginx允许用户,用户组

worker_processes :指定nginx开启的进程数量

error_log : 指定日志位置,以及日志级别

pid : 进程id储存位置

worker_rlimit_nofile : 用于绑定worker进程和cpu

 

2、event:

use :设定nginx的工作模式,linux推荐使用epoll

worker_connections :每个进程最大连接数,最大客户端连接数=worker_processes*worker_connections;

 

3、http:

include : 引入配置文件,减少主配置文件的复杂度

default_type:默认类型,例如php环境并没有安装那么使用二进制流(application/octet-stream)解析,出现流下载框

log_format:定义日志的打印格式,在后面access_log 等地方设置级别可以使用,例如:

log_format combie2 '$remote_addr - $remote_user [$time_local] '

access_log /logs/acc.log combie2  #在这里使用

client_max_body_size : 用户最大单个文件字节数

client_header_buffer_size : 设置请求投大小,一般1kb就够流,特殊有长cookie情况可以再增加

large_client_header_buffers :用来指定缓存最大数量和大小

sendfile :开启(on)高速文件传输模式

keepalive_timeout : 保持活动超时时间

client_header_timeout : 请求头接受超时时间

client_body_timeout : 请求体接受超时时间

send_timeout:响应客户端超时时间

gzip : 开启(on)压缩

 

4、server:

listen  : 监听端口,通常为80

server_name : 指定ip地址或者域名地址,多个用空格隔开

index : 默认首页文件,例如 “index.php index.html” 它会以此从左往右找

root: 访问的根地址,配合index指定访问的文件

charset : 用于指定返回页面的编码格式

access_log : 指定日志文件地址,这里要注意文件读写权限

error_page : 指定错误类型和错误页面 ,示例,在目录找到对于的页面:

error_page 500 502 503 504 /50x.html

location =/50x.html {

root error_page/html/;

}

 

5、location:

基本语法:location [=|~|~*|^~] /uri/ { … }

其中/uri/就是正则表达式,或者普通的字符串匹配

= 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。
~ 为区分大小写匹配(可用正则表达式)
!~为区分大小写不匹配
~* 为不区分大小写匹配(可用正则表达式)
!~*为不区分大小写不匹配
^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。

-f和!-f判断文件是否存在

-d!-d判断目录是否存在

-e和!-e判断文件或者目录是否存在

-x和!-x判断文件是否可以执行

 

location = / {
 # 只匹配 / 查询。
}
location / {
 # 匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配。
}
location ^~ /images/ {
 # 匹配任何已 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。
}
location ~*.(gif|jpg|jpeg)$ {
 # 匹配任何已 gif、jpg 或 jpeg 结尾的请求。
}
location ~*.(gif|jpg|swf)$ {
  valid_referers none blocked start.igrow.cn sta.igrow.cn;
  if ($invalid_referer) {
  #防盗链
  rewrite ^/ http://$host/logo.png;
  }
}

值得注意等是在nginx中如果使用花括号{},那么整句正则都要使用单引号或者双引号包起来,因为花括号是nginx的配置端区分符

6、rewrite

语法 rewrite regex flag

使用配置块:server、location、if

flag支持字段
last : 表示rewrite之后搜索相应的uri或location

break : 表示终止匹配

redirect : 临时302重定向

permanent :永久301重定向

如下实现新旧网站交替时,只修改内容而不修改url地址的方式:

server
{
 listen 80;
 server_name dev.zengbingo.com;
 location ~ ^/ben/ {
 rewrite ^/ben/(.*)$ /s?wd=$1 break;
 proxy_pass http://www.baidu.com;
 }
}

请求:http://dev.zengbingo.com/ben/ben的笔记

实际请求地址为:https://www.baidu.com/s?wd=ben的笔记

并且浏览器上的url地址不会变化;

7、set

语法:set variable value

使用配置块:server location if

例如,使用请求参数变量进行反向代理重写:

server
{
listen 80;
server_name dev.zengbingo.com;
location ~ ^/ben {
set $query $query_string;
rewrite /ben /s?$query break;
proxy_pass http://www.baidu.com;
}
}

请求 :http://dev.zengbingo.com/ben?wd=ben的笔记

实际请求地址:https://www.baidu.com/s?wd=ben的笔记

8、break

语法:break

使用配置块:server、location、if

如果配置了break,那么配置块后面的重写(rewrite将不回执行)

您必须 [ 登录 ] 才能发表留言!