文章目录
- 前言
 - 一、Nginx在处理配置项中需要面临的问题?
 - 二、Nginx配置的示例:
 - 总结
 
前言
在开发功能灵活的Nginx模块时,需要从配置文件中获取特定的信息,Nginx已经为用户提了强大的配置项解析机制,同时它还支持"-s reload"命令(在不重启服务的情况下使配置生效)。在这一系列文章中将讨论http配置项的一些特点,并全面讨论如何使用http配置项,包括使用Nginx预设的解析方法或者自定义配置项的解析方法。还会从HTTP框架的实现机制上解释http配置项的模型。
一、Nginx在处理配置项中需要面临的问题?
- Nginx如何解析http配置块中的配置项?
 - 具体开发的HTTP模块是如何获取nginx.conf中的配置的?
 - 当一个配置同时出现在http块、server块、location块时,应当选择哪一个块下的配置?
 - 当多个不同URI表达式下的location都配置了mytest配置项,后面的参数却不同,Nginx如何处理?
 
二、Nginx配置的示例:
http {
  test_str main;
  server {
    listen 80;
    test_str server80;
    location /url1 {
      mytest;
      test_str loc1;
    }
    location /url2 {
      mytest;
      test_str loc2;
    }
  }
  server {
    listen 8080;
    test_str server8080;
    location /url3 {
      mytest;
      test_str loc3;
    }
  }
}- 在这段很短的配置中,mytest模块将会处理两个监听端口上建立的TCP连接,以及3种HTTP请求,请求的URL分别对应着/url1、/url2、/url3。
 - 假设mytest模块必须取出test_str配置项的参数,但在以上的例子中test_str出现了6个不同的参数值,那么在mytest模块中以那个值为准呢?
 - Nginx的设计非常灵活,它在每一个http块、server块或location块下,都生成独立的数据结构来存放配置项。因此,它允许当用户访问的请求不同时,配置项test_str具有不同的值。
 - 当请求时/url1时,test_str的值应当是location块下的loc1,还是这个location所属的server块下的server80,又或者是其所属http块下的值main,这个可以由mytest模块自己决定。
 
总结
本文大体介绍了下这一系列文章将要介绍的关于Nginx配置项的大致内容,并对http配置项的使用场景做了简单说明,结合一个具体例子说明Nginx配置项的逻辑。
                
                










