0
点赞
收藏
分享

微信扫一扫

详解HTTP配置(一):http配置项的使用场景


文章目录

  • ​​前言​​
  • ​​一、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配置项的逻辑。


举报

相关推荐

0 条评论