Nginx高级模块
- 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;
}
}
}
-
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服务
- CA签名证书可以防止中间人劫持
- 生成密钥和CA证书
服务器上自己配置HTTPS证书生成流程:
-
openssl version 查看openssl的版本属性(双重检查:rpm -qa|grep open)
-
cd /etc/nginx/ 下mkdir ssl_key文件夹
-
在ssl_key文件夹下面生成密钥文件:openssl genrsa -idea -out cyj.key 1024
-
填写完密码后再根据key文件生成csr文件:openssl req -new -key cyj.key -out cyj.csr
-
根据信息填写完之后,再把csr和key文件打包生成crt文件,有效期10年:
openssl x509 -req -days 3650 -in cyj.csr -signkey cyj.key -out cyj.crt
-
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; } }
-
nginx -s stop -c /etc/nginx/nginx.conf,需要输入你设置的key密码
-
nginx -c /etc/nginx/nginx.conf 启动nginx
-
查看端口号:netstat -luntp|grep 443
配置苹果要求的证书
- 服务器所有的连接使用TLS1.2以上版本
- HTTPS证书必须使用SHA256以上哈希算法前签名
- HTTPS证书必须使用RSA 2048位或ECC 256位以上公钥算法
- 使用前向加密技术
开始配置
- 查看openssl版本号:openssl version 1.0.2k以上
- 查看证书算法类型:openssl x509 -noout -text -in ./cyj.crt
- 根据key文件直接生成crt文件:openssl req -days 3650 -x509 -sha256 -nodes -newkey rsa:2048 -keyout(重启nginx不用输入密码) cyj.key -out cyj_apple.crt
- 其他配置都跟上面相同
HTTPS服务优化
-
激活keepalive长连接
-
设置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; } }