一、前言
相对于http来说,使用ssl证书加密的https更为安全,http传输的数据是明文的,容易被窃听和篡改,而https通过SSL/TLS加密,防止了中间人攻击和数据泄露,保障了通信的机密性和完整性,提供了更高的安全性,但是相对来说http由于不涉及加密解密等过程,通常比HTTPS稍微快一些
二、配置
需要ssl的公有证书,可以在阿里云上免费申请一个,将证书解压后,放在nginx.conf的同级目录中
vi /etc/nginx/nginx.conf
- server {
- listen 80;
- server_name dev.xxx.com;
- rewrite ^/(.*)$ https://dev.xxx.com:443/$1 permanent; #将访问80接口的请求都重定向到443接口
-
- #location / { #return的作用和rewrite是一样的,只是两种方式
- # return 301 https://dev.xxx.com;
- #}
- }
-
- server {
- listen 443 ssl;
- server_name dev.xxx.com;
-
- ssl_certificate dev.xxx.com.pem; #配置公有证书
- ssl_certificate_key dev.xxx.com.key;
-
- ssl_session_cache shared:SSL:1m; #定义SSL会话缓存,加快SSL握手过程,减少服务器负载
- ssl_session_timeout 5m; #设置SSL会话的超时时间
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #定义Nginx支持的SSL/TLS协议版本。常见的值包括TLSv1、TLSv1.1、TLSv1.2、TLSv1.3
- ssl_ciphers HIGH:!aNULL:!MD5; #定义Nginx支持的加密套件。这些加密套件确定了客户端和服务器之间的加密算法
- ssl_prefer_server_ciphers on; #设置是否优先使用服务器端指定的加密套件
-
- location =/ {
- proxy_pass http://dev_web;
- }
- location =/login.html {
- proxy_pass http://dev_web;
- }
- location ~* \.(?:htm|html)$ {
- proxy_pass http://dev_web;
- }
- location ~* \.(?:ico|git|jpg|jpeg|png|bmp|swf|flv|mp4)$ {
- proxy_pass http://dev_web;
- }
- location ~* \.(?:css|js|eot|svg|ttf|woff2|otf|woff)$ {
- proxy_pass http://dev_web;
- }
- location / {
- proxy_set_header x-for $http_x_forwarded_for;
- proxy_set_header X-Forwaided-Proto $scheme;
- proxy_set_header Host $host:$server_port;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Host $host;
- proxy_buffering off;
- client_max_body_size 200m;
- client_body_buffer_size 50m;
- proxy_pass http://dev_gateway;
- }
- }
重新加载nginx配置
nginx -s reload