• nginx常用模块介绍


    ngx_http_access_module模块
    ngx_http_auth_basic_module模块
    ngx_http_stub_status_module模块
    ngx_http_log_module模块
    ngx_http_gzip_module模块
    ngx_http_ssl_module模块
    ngx_http_rewrite_module模块
    ngx_http_referer_module模块
    ngx_http_headers_module模块

    ngx_http_access_module模块
    这个模块只有2个指令

    格式:
    allow address | CIDR | unix: | all; #允许访问
    deny address | CIDR | unix: | all; #拒绝访问
    示例

    location / {
    root html;
    index index.html index.htm;
    allow 192.168.253.129; ##允许192.168.253.129访问
    deny 192.168.253.139; ##拒绝192.168.253.139访问
    }
    ngx_http_auth_basic_module模块
    实现基于用户的访问控制,使用basic机制进行用户认证;

    修改配置文件

    location / {
    root html;
    index index.html index.htm;
    auth_basic "Admin"; ##认证对话框的提示字符串显示的内容
    auth_basic_user_file /usr/local/nginx/conf/htpasswd; ##存放认证用的用户名和文件,需要用htpasswd命令生成
    }
    安装一下htpasswd命令

    yum install httpd-tools
    生成nginx用户和密码文件

    [root@localhost nginx]# htpasswd -c /usr/local/nginx/conf/htpasswd nginx
    New password:
    Re-type new password:
    Adding password for user nginx
    重启一下nginx然后访问

    nginx -s reload

    然后用我们刚才设置的用户密码登陆就可以了


    ngx_http_stub_status_module模块
    这个模块主要是用来查看http的状态信息的,使用方式直接在location里面加stub_status;就可以了

    示例

    location /admin/ {
    alias /var/www/html/;
    stub_status;##重点是这一个指令
    }
    重新装载一下配置文件

    nginx -s reload
    接下来我们访问网站


    Active connections: 3
    server accepts handled requests
    16 16 54
    Reading: 0 Writing: 1 Waiting: 2
    Active connections: 活动状态的连接数;
    accepts:已经接受的客户端请求的总数;
    handled:已经处理完成的客户端请求的总数;
    requests:客户端发来的总的请求数;
    Reading:处于读取客户端请求报文首部的连接的连接数;
    Writing:处于向客户端发送响应报文过程中的连接数;
    Waiting:处于等待客户端发出请求的空闲连接数;
    ngx_http_log_module模块
    nginx日志模块
    几个重要的指令

    log_format name string …;
    string可以使用nginx核心模块及其它模块内嵌的变量;

    access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
    access_log off;
    访问日志文件路径,格式及相关的缓冲的配置;

    open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
    open_log_file_cache off;
    缓存各日志文件相关的元数据信息;

    max:缓存的最大文件描述符数量;
    min_uses:在inactive指定的时长内访问大于等于此值方可被当作活动项;
    inactive:非活动时长;
    valid:验正缓存中各缓存项是否为活动项的时间间隔;
    ngx_http_gzip_module模块

    压缩模块,有利于传输数据的大小减少,但是cpu使用会变高。因为要对传输的数据进行压缩。
    1. gzip on | off;
    开启或关闭压缩功能
    2.gzip_comp_level level;
    设置压缩比,一般使用6
    3. gzip_disable regex …;
    对请求报文的“User-Agent”匹配成功的请求,不进行压缩。
    4. gzip_min_length length;
    启用压缩功能的响应报文大小阈值;大于某个值才开启压缩功能
    5. gzip_buffers number size;
    支持实现压缩功能时为其配置的缓冲区数量及每个缓存区的大小;
    6. gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any …;
    nginx作为代理服务器接收到从被代理服务器发送的响应报文后,在何种条件下启用压缩功能的;

    off:对代理的请求不启用
    no-cache, no-store,private:表示从被代理服务器收到的响应报文首部的Cache-Control的值为此三者中任何一个,则启用压缩功能;
    gzip_types mime-type …;
    压缩过滤器,仅对此处设定的MIME类型的内容启用压缩功能;
    示例:
    gzip on;
    gzip_comp_level 6;
    gzip_min_length 64;
    gzip_proxied any;
    gzip_types text/xml text/css application/javascript;
    ngx_http_ssl_module模块
    设置https连接的模块
    1. ssl on | off;
    是否开启ssl连接
    2. ssl_certificate file;
    当前虚拟主机使用PEM格式的证书文件;
    3. ssl_certificate_key file;
    当前虚拟主机上与其证书匹配的私钥文件;
    4. ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
    支持ssl协议版本,默认为后三个;
    5. ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
    builtin[:size]:使用OpenSSL内建的缓存,此缓存为每worker进程私有;
    [shared:name:size]:在各worker之间使用一个共享的缓存;
    6. ssl_session_timeout time;
    客户端一侧的连接可以复用ssl session cache中缓存 的ssl参数的有效时长;

    先自建一个CA,创建证书和私钥文件

    (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
    openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655 #然后填写相关信息
    mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
    touch /etc/pki/CA/{serial,index.txt}
    echo 01 > /etc/pki/CA/serial
    mkdir /usr/local/nginx/ssl
    cd /usr/local/nginx/ssl
    (umask 077; openssl genrsa -out /usr/local/nginx/ssl/ssl.key 2048)
    openssl req -new -key /usr/local/nginx/ssl/ssl.key -out /usr/local/nginx/ssl/ssl.csr -days 365 ##填写相关信息。域名这里设置为www.ice.com.
    openssl ca -in /usr/local/nginx/ssl/ssl.csr -out /usr/local/nginx/ssl/ssl.crt
    修改配置文件/usr/local/nginx/conf/nginx.conf

    配置示例:
    server {
    listen 443 ssl;
    server_name www.ice.com;
    root /var/www/html;
    ssl on;
    ssl_certificate /usr/local/nginx/ssl/ssl.crt;
    ssl_certificate_key /usr/local/nginx/ssl/ssl.key;
    ssl_session_cache shared:sslcache:20m;
    location / {
    index index.html index.htm;
    }
    }
    配置完成之后我们需要设置一下域名解析
    在这个目录下C:\Windows\System32\drivers\etc
    找到hosts文件并修改


    保存退出

    然后访问一下


    因为ca是自建的所以说不安全,我们在浏览器导入ca的证书,就可以了 。
    我们先吧虚拟机的ca文件复制到物理机

    sz /etc/pki/CA/cacert.pem ##这个命令需要安装 lrzsz 安装方法 yum install lrzsz -y
    1
    导入证书


    然后再次访问


    这里显示安全链接了

    ngx_http_rewrite_module模块
    常用的几个指令
    1、rewrite regex replacement [flag]
    将用户请求的URI基于regex所描述的模式进行检查,匹配到时将其替换为replacement指定的新的URI;
    注意:如果在同一级配置块中存在多个rewrite规则,那么会自下而下逐个检查;被某条件规则替换完成后,会重新一轮的替换检查,因此,隐含有循环机制;[flag]所表示的标志位用于控制此循环机制;

    [flag]:

    last:如果规则有很多条。这里重写完成一次之后就会重新开始匹配规则,直至最后一条。也就是说。如果规则写的不好很容易造成死循环,不停的重写规则。
    break:重写完成之后不再从头再次匹配规则。直接跳出循环
    redirect:重写完成后以临时重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;不能以http://或https://开头;
    permanent:重写完成后以永久重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;
    示例比如我们要将http请求重定向到https请求。我们可以在http的server里面这样写里面这样写

    rewrite (.*)$ https://www.ice.com$1 break;
    具体可以看官方文档
    http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return

    ngx_http_referer_module模块

    可以基于这个模块做防盗链。Referer 是 HTTP 请求header 的一部分,当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里有包含 Referer 。比如我在www.google.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header 信息里就有:

    Referer=http://www.google.com
    valid_referers none | blocked | server_names | string …;
    定义referer首部的合法可用值;

    none:请求报文首部没有referer首部;
    blocked:请求报文的referer首部没有值;
    server_names:参数,其可以有值作为主机名或主机名模式;
    arbitrary_string:直接字符串,但可使用*作通配符;
    regular expression:被指定的正则表达式模式匹配到的字符串;要使用~打头,例如 ~.*.ice.com;
    配置示例:

    valid_referers none block server_names *.ice.com ; #3设置有效的referers

    if($invalid_referer) {
    return 403; ##如果referer是不再我们定义的valid_referers列表中,则返回一个403拒绝访问
    }
    ngx_http_headers_module模块
    向由代理服务器响应给客户端的响应报文添加自定义首部,或修改指定首部的值;

    1、add_header name value [always];

    添加自定义首部;

    add_header X-Via $server_addr;
    add_header X-Accel $server_name;
    1
    2
    3
    4
    2、expires [modified] time;

    expires epoch | max | off;

    用于定义Expire或Cache-Control首部的值;
    1
    2
    3
    测试:在location中加上add_header Test test; 在响应头部增加一个Test首部。内容是test。然后重启nginx,访问测试一下

    ————————————————
    版权声明:本文为CSDN博主「Summer-skq」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_43215948/article/details/108088884

  • 相关阅读:
    每天写点shell——read的用法
    串口编程(一) :理论基础
    常用算法3
    Linux man C++ 库函数
    网络爬虫(一):配置selenium、pycharm(windows平台)
    C/C++ 类型内存占用详解
    git常用命令总结
    常用算法2
    本地git关联远程github
    python实现float/double的0x转化
  • 原文地址:https://www.cnblogs.com/zhangzeyuan/p/16380731.html
Copyright © 2020-2023  润新知