Nginx 配置 HTTPS问题解决
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编译安装的时候没有开启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无法找到ssl证书文件,因为证书文件的存放路径有问题,重新mv证书文件的位置后,再次nginx -t检查配置文件,结果successful
启动nginx,访问域名,一切顺利,地址栏已经有熟悉的小锁头了。
发表评论