Nginx配置https证书 原创
春节不停更,此文正在参加「星光计划-春节更帖活动」
日积月累,水滴石穿 😄
笔者的服务器是阿里云的。所以本文是基于阿里云申请免费证书,进行配置。
申请免费证书
登录阿里云 -》 打开控制台 - 》 产品与服务 -》搜索 ssl。
购买之后再回到之前的页面,点击创建证书。
然后进行证书申请!填写要绑定的域名、个人信息
填写完成后,会进入到验证信息。如下图:
验证通过后,提交审核。审核通过如下:
点击下载按钮。会打开具体部署方式的证书。然后选择对应的下载就可以。
小杰这边用的是 Nginx
的方式。进行下载,下载下来是一个压缩包,然后进行解压得到如下两个文件:
在Nginx服务器上安装证书
执行以下命令,在Nginx安装目录(默认为/usr/local/nginx/conf)下创建一个用于存放证书的目录,将其命名为cert。小杰的Nginx安装目录被我改了。
[root@oot nginx-1.13.7]# cd /usr/java/nginx/nginx-1.13.7/conf
[root@root conf]# mkdir cert
目录创建完成之后,将两个证书文件上传至 cert 目录中。
编辑配置文件
编辑 Nginx 配置文件(nginx.conf),修改与证书相关的配置内容。nginx.conf
默认保存在/usr/local/nginx/conf
目录下。如果您修改过 nginx.conf
的位置,请将/usr/local/nginx/conf/nginx.conf
替换成修改后的位置。
小杰的配置文件在/etc/nginx/
目录下。
[root@root nginx]# vim /etc/nginx/nginx.conf
在配置文件中定位到HTTP协议代码片段(http{}
)。发现片段中有 include
关键字,将 /etc/nginx/conf.d/
目录下的所有 .conf 文件进行了引入。
执行以下命令,打开配置文件,配置文件不存在则会创建
[root@root conf.d]# vim /etc/nginx/conf.d/httpsTest.conf
在文件中加入以下配置
server {
#配置HTTPS的默认访问端口为443。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
listen 443 ssl;
server_name xxx; # 替换成证书绑定的域名
#root html;
index index.html index.htm;
ssl_certificate /usr/java/nginx/nginx-1.13.7/conf/cert/7046276_gongj.top.pem; # 替换成上传的证书文件的名称
ssl_certificate_key /usr/java/nginx/nginx-1.13.7/conf/cert/7046276_gongj.top.key; # 替换成上传的证书文件的名称
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
root homePage; #站点目录
index index.html;
}
}
这里为了测试效果,创建了一个homePage
目录,目录下有一个名为 index.hmtl
文件。注意:homePage 的位置,需要与 nginx.conf 同级,因为我这使用的是相对路径
。
index.html 内容如下:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx! HTTPS </title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx! HTTPS </h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx. HTTPS 测试成功</em></p>
</body>
</html>
配置完成之后,执行以下命令进行重启。
# Nginx服务的可执行目录 /usr/sbin
# reload 刷新配置文件,但如果是新增了配置文件,则该命令失效
# 需要进行重启 nginx
/usr/sbin/nginx -s reload
# 重启
/usr/sbin/nginx -s stop
# 指定配置文件启动
/usr/sbin/nginx -c /etc/nginx/nginx.conf
访问 https:gongj.top
设置HTTP请求自动跳转HTTPS。
我们想在访问 http 页面的时候,能自动跳转到https页面,则需要在跳转的HTTP站点下添加以下rewrite
语句。
server {
listen 80;
server_name gongj.top;
rewrite ^(.*)$ https://$host$1;
}
访问:http://gongj.top/
。