|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
-
-
- # 配置块的嵌套
-
-
-
- ```
- http {
- upstream {}
- split_clients {}
- map {}
- geo {}
- server {
- if() {}
- location {
- limit_except{}
- }
- location {
- location {}
- }
- }
- server {
-
- }
- }
- ```
-
-
-
- # 指令继承,由内到外,向上覆盖
-
-
-
- ```
- server {
- listen 8080;
- root /home/geek.nginx/html;
- access_log logs/geek.access.log main;
- location /test {
- root /home/geek/nginx/test
- access_log logs/access.tet.log main;
- }
- location /dlib {
- alias dlib;
- }
- location / {}
- }
- ```
-
-
-
- # 接受请求内部处理机制
-
- 操作系统内核→事件模块→HTTP模块
-
-
-
- # HTTP模块请求处理
-
- 接受`URI`→分配请求内存池→状态机解析请求行→分配大内存→状态机解析请求行→标识`URI`→状态机解析header→分配大内存→标识header→移除超时定时器→开始11个阶段的http请求处理
-
-
-
-
-
- # 正则表达式
-
-
-
- 元字符
-
- | 代码 | 说明 |
- | ---- | ------------------------ |
- | . | 除了换行符之外的任意字符 |
- | \w | 字母、数字、下划线、汉子 |
- | \s | 空白 |
- | \d | 数字 |
- | \b | 单词的开始或结束 |
- | ^ | 字符串开始 |
- | $ | 字符串结束 |
-
-
-
- 重复
-
- | 代码 | 说明 |
- | ----- | ---------------- |
- | * | 重复零次或很多次 |
- | + | 重复一次或很多次 |
- | ? | 重复零次或一次 |
- | {n} | 重复n次 |
- | {n,} | 重复n次或更多 |
- | {n,m} | 重复n到m次 |
-
-
-
- - `\`:取消元字符的特殊含义
- - `()`分组与取值
-
-
-
- # server_name指令
-
- 指令后可以跟多个域名,第一个是主域名
-
- ```
- *表示泛域名:server_name *.darren.tech
- 正则表达式之前加~前缀:server_name www.darren.tch ~www\d+\.darren\.tech$
- ```
-
-
-
- # HTTP请求处理的11个阶段
-
-
-
- - POST_READ
- - SERVER_REWRITE
- - `FIND_CONFIG`
- - REWRITE
- - POST_REWRITE
- - `PREACCESS`
- - ACCESS
- - POST_ACCESS
- - `PRECONTENT`
- - CONTENT
- - LOG
-
-
-
- # location的匹配规则
|