魔改nginx解决时间显示问题

设计新博客时想利用nginx的目录输出功能,makedown渲染在前端。配置好nginx后发现默认的时间格式是Wed, 31 Dec 1986 10:00:00 GMT,看着很是难受,在网上搜索也搜索不到解决办法,于是研究魔改代码解决。

控制目录输出的模块是ngx_http_autoindex_module.c,然后就魔改这个文件。查看官方文档得知这个模块有四个模式:html | xml | json | jsonp,分别对应ngx_http_autoindex_module.c文件内的ngx_http_autoindex_htmlngx_http_autoindex_jsonngx_http_autoindex_jsonp_callbackngx_http_autoindex_xml这几个函数,其中xml的函数就是很好的事例,915行应该就是定义时间格式的位置:

魔改html

将这段代码复制到html部分中630行处,并且将462行的静态变量掉:

如果462行的静态变量不注释的话在编译时会报静态变量未引用错误。

至此html部分魔改完毕,html的魔改还是很简单的,由此甚至可以对网页的格式做调整,原来是由空格调整,导致有中文是会错位,有时间打算将其改写为列表。

魔改json

json的魔改就麻烦很多,由于语法有很多看不懂的地方,可能存在更好的解决办法,不过不影响魔改。

首先找到是哪条语句控制时间格式,联系上下文应该是第784行,如下:

entry数组应该是从函数外传入的,所以不好修改,所以准备按照格式xml的方式修改,不管如何先把上面注释掉。

在注释掉代码的位置添加以下内容:

然后编译报错发现有很多东西没定义,然后再添加一些东西:

 

魔改后重新编译,结果如下:

如果有需求的话时间格式还可以调整比如说把T和Z去掉,重新编译比较麻烦,就不演示了