前提条件
已有域名,国内域名申请比较麻烦
了解Linux,nginx的基本操作
已有一个腾讯云的网站服务(例如博客服务),该网站需要配置证书,开启https,最好是有部署网站的经验,并且该网站开启nginx代理。
为什么要开启https,与证书是什么关系
因为信息的传输安全,与服务器通信的过程中,信息会被加密,避免信息被劫持。
证书是一种第三方的,被信任的认证系统,它是网站开启https所必要的,证书包含私钥和公钥,它们需要先申请,然后在部署在网站的nginx里面。
腾讯云申请证书
找到腾讯云ssl证书页面:
然后在“我的证书”页面申请免费证书
选择一年免费的证书
填写证书信息
申请的速度比较快,并会通知你,完成申请后下载证书
在已安装的Nginx上开启SSL模块并配置https
https://cloud.tencent.com/developer/article/1976591
如果没有安装ssl模块,重启nginx会报错:
进入nginx 安装的目录:/usr/local/nginx
./nginx -s relaod
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:223
当初安装 Nginx 的时候,没有开启 ssl 模块,那么现在就不能配置开启 https 。
nginx 安装可参考:https://abc.qyzhizi.cn/archives/nginx-an-zhuang-halo-bo-ke-duan-kou-pei-zhi
解决方案:
nginx的源码解压目录:/usr/local/nginx/nginx-1.17.10
切换到 Nginx 安装目录下的 sbin 目录:
cd /usr/local/nginx/sbin/
将 Nginx 停止运行
./nginx -s stop
切换到源码解压目录
/usr/local/nginx/nginx-1.17.10
查看 Nginx 原有的模块配置
/usr/local/nginx/sbin/nginx -V
在configure arguments:后面显示的原有的configure参数如下:
--prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/conf/nginx.pid --lock-path=/usr/local/nginx/lock/nginx.lock
在已有的配置基础上新增 --with-http_ssl_module,形成新的配置命令,并在源码目录运行下面的命令
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/conf/nginx.pid --lock-path=/usr/local/nginx/lock/nginx.lock --with-http_ssl_module
配置完成后,继续运行命令 make
make
切记:这里不要进行make install,否则就是覆盖安装
备份原有已安装好的 nginx 文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
将刚刚编译好的 nginx 文件覆盖掉原有的 nginx
cp ./objs/nginx /usr/local/nginx/sbin/
查看是否已经加入成功
/usr/local/nginx/sbin/nginx -V
此时看到 ssl 模块已经被加载
configure arguments: --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/conf/nginx.pid --lock-path=/usr/local/nginx/lock/nginx.lock --with-http_ssl_module
Nginx 服务器 SSL 证书安装部署
将ssl证书复制到/usr/local/nginx/conf
编辑:/usr/local/nginx/conf/nginx.conf
upstream blog {
server 127.0.0.1:8090;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://blog;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
...
## 添加跳转
return 301 https://abc.qyzhizi.cn$request_uri;
server {
listen 443 ssl;
server_name abc.qyzhizi.cn;
ssl_certificate /usr/local/nginx/conf/abc.qyzhizi.cn_bundle.crt;
ssl_certificate_key /usr/local/nginx/conf/abc.qyzhizi.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
client_max_body_size 20m;
client_body_buffer_size 20m;
location / {
proxy_pass http://blog;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
其中添加跳转:return 301 https://abc.qyzhizi.cn$request_uri;
还设置443服务,证书的位置
启动 Nginx,访问https域名,即可访问成功。
cd /usr/local/ngxin/sbin
./nginx