nginx常用模块

NGX_HTTP_AUTH_BASIC_MODULE

这个模块用来做Basic Auth认证的,默认就已经安装过了。

生成密码

1
printf "username:$(openssl passwd -crypt password)\n" >> conf/htpasswd

修改配置文件

1
2
3
4
5
6
7
8
9
10
server {
listen 80;
server_name elk.kekek.cc;

location / {
auth_basic "elk.my-guide.cc";
auth_basic_user_file htpasswd;
proxy_pass http://elk.my-guide.cc:5601;
}
}

需要注意的是如果auth_basic_user_file使用相对路径来指定,那么它相对的是conf文件。

重新加载配置

1
nginx -s reload

NGX_HTTP_SUB_MODULE

这个模块可以让我们来修改网站响应内容中。

默认这个模块是没编译到Nginx中的,在配置的时候我们加上--with-http_sub_module就可以了。

它主要有三个指令

  • sub_filter

    1
    2
    3
    4
    5
    # 这里会将网页里的`dog`替换成`pig`
    sub_filter dog pig;

    # 在头部引入一段js。注意,我们只能使用一次sub_filter,如果有多个地方或者更复杂的替换使用下面的`NGX_HTTP_SUBSTITUTIONS_FILTER_MODULE`模块
    sub_filter </head> '</head><script language="javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>';
  • sub_filter_types

    1
    2
    # 指定需要被替换的MIME类型,默认为'text/html',如果制定为*,那么所有的
    sub_filter_types text/javascript text/css;
  • sub_filter_once

    1
    2
    字符串替换一次还是多次替换,默认替换一个。如果网页中有多个`dog`字符串,如果开启once只会替换第一个。
    sub_filter_once on;

NGX_HTTP_SUBSTITUTIONS_FILTER_MODULE

NGX_HTTP_SUBSTITUTIONS_FILTER_MODULE和NGX_HTTP_SUB_MODULE类似,不过功能更强大,在这里我们可以使用正则去匹配。

这是一个第三方模块,编译时需要加上--add-module=/path/to/ngx_http_substitutions_filter_module

它主用两个指令

  • subs_filter

    1
    2
    3
    4
    5
    6
    # 替换`<script src="jquery.min.js?v=3.2.1"></script>`的版本为URL上v参数值。
    # 例如:我们请求`index.html?v=2.2.2`,处理后我们拿到的网页内容就是`<script src="jquery.min.js?v=2.2.2"></script>`。
    # $arg_v取出query上的v的值。$arg代表query,$arg_{x}代表query上{x}的值。
    subs_filter jquery\.min\.js\?v=\d\.\d\.\d jquery.min.js?v=$arg_v or;
    # subs_filter 可以写多个
    subs_filter dog pig;

    subs_filter 第三个参数,替换模式。我们可以选择字符串替换或者正则替换

    • g(default):替换所有匹配的字符串。
    • i: 执行不区分大小写的匹配。
    • o: 只需将第一个。
    • r:该模式是作为一个正则表达式处理,默认是固定的字符串。
  • subs_filter_types

    1
    2
    # 指定需要被替换的MIME类型,默认为'text/html',如果制定为*,那么所有的
    sub_filter_types text/javascript text/css;

参考

Nginx编译安装第三方模块http_substitutions_filter_module

NGINX-HTTP-CONCAT

用于 css、js 合并。

1
http://example.com/static/??foo.css,bar/foobaz.js
1
2
<link rel="stylesheet" href="??foo1.css,foo2.css,subdir/foo3.css?v=2345" />
<script src="??bar1.js,bar22.css,subdir/bar3.js?v=3245" />

HTTP_IMAGE_FILTER_MODULE

http://www.ttlsa.com/nginx/nginx-modules-nginx-http-footer-filter/

LIMIT_UPLOAD_RATE

限制客户端上传速率

NGINX-HTTP-GEO-IP-MODULE

NGX_DYNAMIC_UPSTREAM

Dynamic upstream for nginx

HTTP_UPSTREAM_CONSISTENT_HASH_MODULE

本站采用「署名 4.0 国际」进行许可。