Nginx 配置 HTTPS问题解决

目录 Linux
Nginx 配置 HTTPS问题解决-下一朵云
图1 NGINX

SSL证书在阿里云免费申请,查询文档nginx SSL配置如下:

# 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
server_name localhost;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
root html;
index index.html index.htm;
ssl_certificate cert/domain name.pem;   #将domain name.pem替换成您证书的文件名。
ssl_certificate_key cert/domain name.key;   #将domain name.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 / {
root html;   #站点目录。
index index.html index.htm;   
}
}  

按照文档配置完成后,nginx -t 检查配置文件时:

报错一:nginx: [emerg] the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:37

Nginx 配置 HTTPS问题解决-下一朵云
图2 nginx报错内容

解决办法:此报错为nginx编译安装的时候没有开启http_ssl_module 模块,打开nginx的安装源码文件夹,配置ssl模块

$ cd nginx-1.16.1
$ ./configure --prefix=/usr/local/nginx --with-http_ssl_module

使用 make 命令编译(使用make install会重新安装nginx),此时当前目录会出现 objs 文件夹,用新的 nginx 文件覆盖当前的 nginx 文件

$ cp ./objs/nginx /usr/local/nginx/sbin/

确认nginx ssl模块安装完成后,nginx -t检查配置文件又报错:

报错二:nginx: [emerg] cannot load certificate “/usr/local/nginx/conf/cert/1771033_www.orcy.net.pem”: BIO_new_file() failed (SSL: error:02001002:system l ibrary:fopen:No such file or directory:fopen(‘/usr/local/nginx/conf/cert/1771033_www.orcy.net.pem’,’r’) error:2006D080:BIO routines:BIO_new_file: no such file)
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

Nginx 配置 HTTPS问题解决-下一朵云
图2 Nginx报错内容2

解决办法:经检查是nginx无法找到ssl证书文件,因为证书文件的存放路径有问题,重新mv证书文件的位置后,再次nginx -t检查配置文件,结果successful

Nginx 配置 HTTPS问题解决-下一朵云
图3 检查配置文件正确

启动nginx,访问域名,一切顺利,地址栏已经有熟悉的小锁头了。

Nginx 配置 HTTPS问题解决-下一朵云
图4 测试https访问
>>本文为下一朵云的原创文章,转载请附上原文出处链接及本声明
>>原文链接地址:Nginx 配置 HTTPS问题解决

1 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注