Nginx的配置与开发学习(五)

版权声明:转载记得宣传奥~。~ https://blog.csdn.net/c_ym_ww/article/details/88115922

Nginx高级模块

  1. secure_link_module模块
  • 制定 并允许检查请求的链接的真实性以及保护资源免遭未经授权的访问
  • 限制链接生效周期
    在这里插入图片描述
    md5:加密验证 expires:过期校验

safe_down.conf 配置

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
    root /opt/app/code;

    location / {
        secure_link $arg_md5,$arg_expires;
        secure_link_md5 "$secure_link_expires$uri baidu";#baidu为自定义字符串

        if ($secure_link = "") {
            return 403;
        }

        if ($secure_link = "0") {
            return 410;
        }
    }
}
  1. geoip_module模块:国内(浙江访问浙江,江苏访问江苏)用户访问国内服务器,国外用户访问国外服务器

    • 基于IP地址匹配MaxMind GeoIP二进制文件,读取IP所在地域信息
    • yum install nginx-module-geoip

    geo.conf 配置

    geoip_country /etc/nginx/geoip/GeoIP.dat;
    geoip_city /etc/nginx/geoip/GeoLiteCity.dat;
    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/log/host.access.log  main;
    
        location / {
            if ($geoip_country_code != CN) {
                return 403;
            }
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
       location /myip {
            default_type text/plain;
            return 200 "$remote_addr $geoip_country_name $geoip_country_code $geoip_city";
       }
       ......
    }
    

HTTPS服务

  1. CA签名证书可以防止中间人劫持
  2. 生成密钥和CA证书

服务器上自己配置HTTPS证书生成流程:

  1. openssl version 查看openssl的版本属性(双重检查:rpm -qa|grep open)

  2. cd /etc/nginx/ 下mkdir ssl_key文件夹

  3. 在ssl_key文件夹下面生成密钥文件:openssl genrsa -idea -out cyj.key 1024

  4. 填写完密码后再根据key文件生成csr文件:openssl req -new -key cyj.key -out cyj.csr

  5. 根据信息填写完之后,再把csr和key文件打包生成crt文件,有效期10年:

    openssl x509 -req -days 3650 -in cyj.csr -signkey cyj.key -out cyj.crt

  6. ssl.conf配置文件

    server
     {
       listen       443 ssl;#nginx1.15版本之后开启https
       server_name  ip  crt内写的hostname;
       ssl on; #nginx1.15版本之后就可以去掉这个,才用listen..ssl
       ssl_certificate /etc/nginx/ssl_key/jesonc.crt;
       ssl_certificate_key /etc/nginx/ssl_key/jesonc.key;
       #ssl_certificate_key /etc/nginx/ssl_key/jesonc_nopass.key;
    
       index index.html index.htm;
       location / {
           root  /opt/app/code;
       }
    }
    
  7. nginx -s stop -c /etc/nginx/nginx.conf,需要输入你设置的key密码

  8. nginx -c /etc/nginx/nginx.conf 启动nginx

  9. 查看端口号:netstat -luntp|grep 443

配置苹果要求的证书

  • 服务器所有的连接使用TLS1.2以上版本
  • HTTPS证书必须使用SHA256以上哈希算法前签名
  • HTTPS证书必须使用RSA 2048位或ECC 256位以上公钥算法
  • 使用前向加密技术

开始配置

  1. 查看openssl版本号:openssl version 1.0.2k以上
  2. 查看证书算法类型:openssl x509 -noout -text -in ./cyj.crt
  3. 根据key文件直接生成crt文件:openssl req -days 3650 -x509 -sha256 -nodes -newkey rsa:2048 -keyout(重启nginx不用输入密码) cyj.key -out cyj_apple.crt
  4. 其他配置都跟上面相同

HTTPS服务优化

  1. 激活keepalive长连接

  2. 设置ssl session缓存

    server
     {
       listen       443 ssl;
       server_name  localhost;
     
       keepalive_timeout 100;
    
       ssl_session_cache   shared:SSL:10m;
       ssl_session_timeout 10m;
    
       ssl_certificate /etc/nginx/ssl_key/cyj.crt;
       ssl_certificate_key /etc/nginx/ssl_key/cyj.key;
    
       index index.html index.htm;
       location / {
           root  /opt/app/code;
       }
    }
    

猜你喜欢

转载自blog.csdn.net/c_ym_ww/article/details/88115922
今日推荐