写在前面的话
关于nginx和jetty之间的事儿是三少奶奶写的一个系列,每个系列环环相扣,所以强烈建议读者从第一话开始食用,希望能对你有所帮助
在开发微信小程序时,官方要求小程序发送的请求必须是https,所以在腾讯云备案了域名,并申请了免费的ssl证书。考虑到小程序的访问速度等问题,服务器端采用了jetty来部署小程序后台管理系统,采用nginx实现对后台请求的反向代理和小程序端对图片等静态资源的请求。于是,三少奶奶便跳进了nginx和jetty的坑中。经过一段时间的挖坑填土,最终实现了目标。在梳理过后,将为迷途的读者提供一种填坑参照。
前期准备:
(1) 下载好nginx和jetty
(2) 简单了解nginx和jetty是什么
(3) 简单了解nginx的配置文件是如何配置的
本文将回答以下问题并附上链接
问题一:如何为nginx配置https?
(以腾讯云为例)
步骤一:在腾讯云中购买并备案域名
步骤二:在腾讯云的ssl模块申请免费证书,免费用1年,(申请过程中,建议自己输入私钥密码并记住)申请通过后,便可以把证书下载到本地
步骤三:解压证书 你会得到以下证书列表,我们只需要nginx这个文件夹中的两个文件
步骤四:把上述两个文件放到下载好的nginx文件中的conf目录下
步骤五:打开conf目录下的nginx.conf文件,直接copy以下代码,并替换成自己的域名和证书名称
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
server {
listen 443 ssl;
server_name www.demo.xyz; #已经备案的域名
keepalive_timeout 70;
ssl_certificate 1_www.demo.xyz_bundle.crt; #申请的证书名称
ssl_certificate_key 2_www.demo.xyz.key; #申请的证书名称
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always;
#...........其他代码
}
}
总结:到这里,我们就为nginx安装好证书了,当然现在使用https进行访问的话还差点东西,先休息一下,5分钟后,三少奶奶将为你介绍如何强制让http跳转到https