nginx-blog程序解释

默认分类 · 2017-12-28

用c++写了个博客,基于nginx的模块,对整个程序做个注释,备忘

用c++写了个博客,基于nginx的模块,对整个程序做个注释,以做备忘之用。

1.源码总体框架

源代码主要有3个cpp文件,分别是ngx_blog.ccp,blog_home_page.cpp,lib_markdown_parse.cpp。

其中lib_markdown_parse.cpp是我自己用c++写的对markdown文件的解释器,目前不支持数学
公式,其他都没问题了,可以单独使用,具体支持的语法见nginx-blog-markdown-syntax文件

blog_home_page.cpp主要用于生成index.html、archive文件夹下的html、tags文件夹下的html文件,
并生成blog/文件夹下的html文件。

ngx_blog.cpp文件是ngx_http模块,除了常规的创建conf变量,读取nginx.conf中的配置变量之外,
主要有2个函数需要说明

2.各函数简介

2.1 init_module函数

nginx的init_module阶段函数是在启动之后,master生成worker进程之前的最后一个阶段函数,所有
nginx模块的init_module函数在这个阶段都会执行一遍。

nginx-blog模块在这个阶段设置了一个函数ngx_http_blog_all,该函数主要是在启动的时候执行一遍
blog_home_page中的函数,生成所有的html文件。

生成完所有文件后,再把src_root_dir/blog目录、src_root_dir目录以及src_root_dir/blog/所有存在的
子目录添加到inotify监测系统里面。

2.2 postconfiguration函数

nginx的postconfiguration函数用于读取完配置文件之后进行处理,也可以指定http链接来了之后的各种处理
函数。

nginx-blog的postconfiguration函数叫ngx_http_blog_init,主要作用是用于将ngx_http_blog_handler函数
添加到http的ACCESS阶段,链接来了,首先在此阶段进行处理。

2.3 http链接处理函数

nginx-blog的链接处理函数为ngx_http_blog_handler,此函数主要作用是读取inotify的监控信息,如果监测
到文件有变化,则直接重生成一遍html文件。

nginx
Theme Jasmine by Kent Liao