fangpsh's blog

Ngxfmt

接手一坨缩进、格式乱七八糟的Nginx 配置,简直要命。想起golang 有一个gofmt,动手做一个简单的ngxfmt。

Nginx 的配置语法比较简单,分为块配置和简单配置,例如:

server { # simple reverse-proxy
    listen       80;
    server_name  domain2.com www.domain2.com;
    access_log   logs/domain2.access.log  main;

    # serve static files
    location ~ ^/(/images|javascript|js|css|flash|media|static)/  {
       root    /var/www/virtual/big.server.com/htdocs;
       expires 30d;
    }

    # pass requests for dynamic content to rails/turbogears/zope, et al
    location / {
        proxy_pass      http://127.0.0.1:8080;
    }
  }

listen, server_name 这种是简单配置,以分号结尾;serverlocaiton 这种为块配置,带一对小括号。写过nginx 插件或者看过ngx_conf_parse 对nginx 的配置加载会更了解一点。

毕业快3年,忽然十分想念编译原理老师,语法分析,词法分析,LR,yacc,lex 什么的。然而编译原理龙书早被我卖了,买鸡肉卷吃。听说快乐基倒闭了??可惜可惜。

只能非常不优雅的解决,从上往下手动撸,处理好缩进,清楚多余的空格,再整一下左对齐就好了。吃一个鸡肉卷的时间就能撸好🐔 。

ngxfmt

log_format 这换行可以说是非常舒服了😌 ,gzip_types 这对齐能让人高潮🎆 。

ngxfmt-2

在前公司曾经三个产品线要写到一个server 里面,server_name 长到让人绝望😭 ,而且偶尔还得改改,这样换行就清爽多了🍃 。

相邻的配置项如果一样,对所有的值都进行左对齐处理,像这样⬇️ :
ngxfmt-2

源代码🐙 :fangpsh/ngxfmt
有点乱,回头再看估计会被恶心到,就像一次性吃了3个鸡肉卷。

其他: