← 返回首页
Nginx配置SSL安全证书
发表时间:2020-01-13 21:56:23
讲解如何在nginx下配置SSL安全证书启用https

1.如果您是在阿里云购买的域名,可以申请免费的个人SSL安全证书。

2.在SSL证书页面,单击已签发标签,定位到需要下载的证书并单击证书卡片右下角的下载。

3.在证书下载侧页面中定位到Nginx服务器,并单击右侧操作栏的下载,将Nginx服务器证书压缩包下载到本地。

4.解压已下载保存到本地的Nginx证书压缩包文件。 解压后的文件夹中有2个文件: 证书文件:以.pem为后缀或文件类型。 密钥文件:以.key为后缀或文件类型。

5.登录您的Nginx服务器,在Nginx安装目录(默认Nginx安装目录为/usr/local/nginx/conf)下创建cert目录,并将下载的证书文件和密钥文件拷贝到cert目录中。

6.修改Nginx安装目录/conf/nginx.conf文件。 找到以下配置信息:

# HTTPS server
  server {
  listen 443;
  server_name localhost;
  ssl on;
  ssl_certificate cert.pem;
  ssl_certificate_key cert.key;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  ssl_prefer_server_ciphers on;
  location / {
    ....
  }

修改为:

server {
        listen       443 ssl;
        server_name  www.xxxxx.com; #修改为您证书绑定的域名,例如:www.example.com。

        ssl_certificate      cert/xxxxxx.pem; #证书文件
        ssl_certificate_key  cert/xxxxxx.key; #密钥文件

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  #使用该协议进行配置。
        ssl_prefer_server_ciphers  on;

        root   /usr/local/nginx/html;

        #我的主模块配置
        location / {
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
            add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
            root /usr/local/nginx/html/blog;
            try_files $uri $uri/ @router;
            index index.html;
        }

        #我的子模块配置
    location /admin {
            try_files $uri $uri/ /admin/index.html;

        }

        #我的接口配置
        location /api/ {
             proxy_pass http://www.xxxx.com:8080/; #将地址代理到api上
        }

        #我的路由配置
    location @router {
           rewrite ^.*$ /index.html last;
        }
    }

7.保存nginx.conf文件后退出。 8.执行以下命令重启Nginx服务器。

nginx -s stop
nginx -s start

9.设置HTTP请求自动跳转HTTPS。 在需要跳转的HTTP站点下添加以下rewrite语句,实现HTTP访问自动跳转到HTTPS页面。

server {
        listen       80;
        server_name  www.xxxxx.com;  #修改为您证书绑定的域名,例如:www.example.com。
        rewrite ^(.*)$ https://$host$1 permanent; #将所有http请求通过rewrite重定向到https。

        root   /usr/local/nginx/html;

        location / {
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
            add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
            root /usr/local/nginx/html/blog;
            try_files $uri $uri/ @router;
            index index.html;
        }

        location /admin {
            try_files $uri $uri/ /admin/index.html;

        }

        location /api/ {
             proxy_pass http://www.simoniu.com:8080/; # 将地址代理到api上
        }

    location @router {
           rewrite ^.*$ /index.html last;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }