借助nginx快速搭建一个简单的https
目前尝试过基于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
至此结束,欢迎补充