借助nginx快速搭建一个简单的https
发布于 5 年前 作者 fsong 2216 次浏览 来自 分享

目前尝试过基于tomcat和nginx来搭建https,总体来说感觉nginx会更灵活,所以做个笔记

1、购买SSL证书,从各大证书平台购买,并且要和你的域名进行绑定。

  • 由于每个平台都是大同小异的,购买过程就忽略了,商家指引步骤都很详细
  • 在证书管理控制台中申请,并与域名绑定(目前发现免费证书不支持绑定二级域名,其他证书未知)
  • 提交审核后一般几分钟就可以认证通过,点击部署到对应的云服务器,下载nginx证书文件

2、nginx配置(假如证书文件名是a.pem,私钥文件是a.key)

  • 在Nginx的安装目录下创建cert目录,并且将下载的文件解压后拷贝到cert目录中。
  • 如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为a.key
  •  打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件。添加HTTPS server相关配置,默认配置文件会有一个注释掉的代码块,改成这样
#复制某云的官方配置进行修改
server {
    listen 443 ssl;
    server_name xxx.myserver.xxx;
    ssl_certificate ../cert/a.pem; # 对照自己存放秘钥文件的位置,不一定要在这里
    ssl_certificate_key ../cert/a.key; # 对照自己存放秘钥文件的位置,不一定要在这里
    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;
    # 不重要的文件资源
    location /myfiles {
        alias /var/apps/nginx/files/myapp/;
    }
    # 代理443端口对应自己服务器的api地址,可以个性化地结合后端安全框架灵活管理api
    location / {
        proxy_pass http://xxx.myserver.xxx:9090;
    }
    # 如果还需要其他辅助api也可以继续添加配置
    location /py {
        proxy_pass http://xxx.myserver.xxx:7001;
    }
    # 同上
    location /myapp{
        proxy_pass http://xxx.myserver.xxx:9090/myapp;
    }
    # 后台系统界面配置
    location /admin {
        root   html/myapp-web; # nginx的web文件习惯放在/html下
        index  index.html;
        # 在使用BrowserHistory打包的前后端分离单页面web应用时,需要此配置将路由 fallback 到 index.html,以免刷新页面跑偏
        try_files $uri $uri/ /index.html;
    }
}
  • 配置写好保存,启动nginx。测试一个/nginx/files/myapp/下的静态资源文件或任意一个api是否能跑通
例如
  原api为:http://xxx.myserver.xxx:9090/test
  改为:https://xxx.myserver.xxx/test

至此结束,欢迎补充

回到顶部