文章内容

2021/7/16 20:07:07,作 者: 黄兵

no "ssl_certificate" is defined for the "listen ... ssl" directive in

最近在配置nginx的时候出现如下错误:

nginx: [emerg] no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/sites-enabled/default:22

我们看看配置内容:

server { 
    listen 80 default_server;
    listen [::]:80 default_server;
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server; 
    server_name _; 
    rewrite ^/(.*)    https://www.pdflibr.com/$1   permanent;
}

出现问题的原因:

这里使用ssl指令,需要配置证书,这里没有指定证书路径,所以出现了以上问题。

解决方案:

1、新建/etc/nginx/ssl目录:

sudo mkdir /etc/nginx/ssl

2、生成一个自签名证书,切换到/etc/nginx/ssl目录,执行如下命令:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

这里生成了一个10年的自签名证书。

3、指定自签名证书路径:

server { 
    listen 80 default_server;
    listen [::]:80 default_server;
    listen 443 default_server;
    listen [::]:443 default_server; 
    server_name _;
    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key; 
    rewrite ^/(.*)    https://www.pdflibr.com/$1   permanent;
}

保存之后,执行sudo nginx -t,测试通过。


参考资料:

1、nginx doc - Configuring HTTPS servers

2、Properly setting up a “default” nginx server for https


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - no "ssl_certificate" is defined for the "listen ... ssl" directive in

分享到:

发表评论

评论列表