鼎鼎知识库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

06HTTP模块.md 2.0KB

3 jaren geleden
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. # 配置块的嵌套
  2. ```
  3. http {
  4. upstream {}
  5. split_clients {}
  6. map {}
  7. geo {}
  8. server {
  9. if() {}
  10. location {
  11. limit_except{}
  12. }
  13. location {
  14. location {}
  15. }
  16. }
  17. server {
  18. }
  19. }
  20. ```
  21. # 指令继承,由内到外,向上覆盖
  22. ```
  23. server {
  24. listen 8080;
  25. root /home/geek.nginx/html;
  26. access_log logs/geek.access.log main;
  27. location /test {
  28. root /home/geek/nginx/test
  29. access_log logs/access.tet.log main;
  30. }
  31. location /dlib {
  32. alias dlib;
  33. }
  34. location / {}
  35. }
  36. ```
  37. # 接受请求内部处理机制
  38. 操作系统内核→事件模块→HTTP模块
  39. # HTTP模块请求处理
  40. 接受`URI`→分配请求内存池→状态机解析请求行→分配大内存→状态机解析请求行→标识`URI`→状态机解析header→分配大内存→标识header→移除超时定时器→开始11个阶段的http请求处理
  41. # 正则表达式
  42. 元字符
  43. | 代码 | 说明 |
  44. | ---- | ------------------------ |
  45. | . | 除了换行符之外的任意字符 |
  46. | \w | 字母、数字、下划线、汉子 |
  47. | \s | 空白 |
  48. | \d | 数字 |
  49. | \b | 单词的开始或结束 |
  50. | ^ | 字符串开始 |
  51. | $ | 字符串结束 |
  52. 重复
  53. | 代码 | 说明 |
  54. | ----- | ---------------- |
  55. | * | 重复零次或很多次 |
  56. | + | 重复一次或很多次 |
  57. | ? | 重复零次或一次 |
  58. | {n} | 重复n次 |
  59. | {n,} | 重复n次或更多 |
  60. | {n,m} | 重复n到m次 |
  61. - `\`:取消元字符的特殊含义
  62. - `()`分组与取值
  63. # server_name指令
  64. 指令后可以跟多个域名,第一个是主域名
  65. ```
  66. *表示泛域名:server_name *.darren.tech
  67. 正则表达式之前加~前缀:server_name www.darren.tch ~www\d+\.darren\.tech$
  68. ```
  69. # HTTP请求处理的11个阶段
  70. - POST_READ
  71. - SERVER_REWRITE
  72. - `FIND_CONFIG`
  73. - REWRITE
  74. - POST_REWRITE
  75. - `PREACCESS`
  76. - ACCESS
  77. - POST_ACCESS
  78. - `PRECONTENT`
  79. - CONTENT
  80. - LOG
  81. # location的匹配规则