#SSL配置 server { listen 80; listen 443 ssl http2; #ssl on; 80和443共存的时候不要开启 ssl_certificate /data/cert/xxx.com.pem; #证书 ssl_certificate_key /data/cert/xxx.com.key; #公钥 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_prefer_server_ciphers on; ssl_session_timeout 10m; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_buffer_size 1400; add_header Strict-Transport-Security max-age=15768000; #HSTS 强制https访问,子域名加includeSubDomains ssl_stapling on; ssl_stapling_verify on; server_name www.xxx.com; access_log /data/wwwlogs/www.xxx.com_nginx.log combined; index index.html index.htm index.php; root /data/wwwroot/xxx.com; if ($ssl_protocol = "") { return 301 https://$host$request_uri; } #下面配置略

nginx如何配置HSTS

add_header Strict-Transport-Security "max-age=15768000"; #这样当第一次以https方式访问我的网站,nginx则会告知客户端的浏览器,以后即便地址栏输入http,也要浏览器改成https来访问我的nginx服务器

添加配置避免被嵌套

add_header X-Frame-Options "DENY"; #避免点击劫持,还要添加 X-Frame-Options 头部,确保不会嵌入到frame 或 iframe,使得网站的内容不会嵌入到其他网站

获取不到$_SERVER[‘HTTPS’]值的问题

proxy_set_header X-Forwarded-Proto $scheme;

获取不到真实IP

  • set_real_ip_from 是指接受从哪个信任前置代理处获得真实用户ip
  • real_ip_header 是指从接收到报文的哪个http首部去获取前代理传送的用户ip
  • real_ip_recursive 是否递归地排除直至得到用户ip(默认为 off)

示例: 从 proxy_protocol 获取

set_real_ip_from 192.168.1.0/24; real_ip_header proxy_protocol;
Last modification:August 21, 2020
如果觉得我的文章对你有用,请随意赞赏