没有为“listen ... ssl”指令定义“ssl_certificate”
回答 2
浏览 5.2万
2019-06-19
我正试图为我的网站配置nginx服务器。我正在使用下面的代码来配置我的服务器。如果我为我的www.fastenglishacademy.fr (443)服务器块添加default_server,它就能工作。
但在这种情况下,我所有的子域也都带来了www.fastenglishacademy.fr 的内容。
如果我删除default_server,我就会得到以下错误:
nginx: [emerg] no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/sites-enabled/fastenglishacademy.fr.conf:14
nginx: configuration file /etc/nginx/nginx.conf test failed
我的nginx的配置代码:
server {
listen 80;
listen [::]:80;
server_name fastenglishacademy.fr;
return 301 https://www.fastenglishacademy.fr$request_uri;
}
server {
listen 80;
listen [::]:80;
server_name www.fastenglishacademy.fr;
return 301 https://www.fastenglishacademy.fr$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name fastenglishacademy.fr;
return 301 https://www.fastenglishacademy.fr$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
root /media/fea/www/fastenglishacademy.com;
index index.html index.htm index.nginx-debian.html;
server_name www.fastenglishacademy.fr;
location / {
etag on;
try_files $uri$args $uri$args/ /index.html;
}
location ~* \.(jpg|jpeg|png|gif|ico|ttf|woff2|woff|svg)$ {
expires 365d;
}
location ~* \.(css|js)$ {
expires 30d;
}
location ~* \.(pdf)$ {
expires 15d;
}
#WARNING: Please read before adding the lines below!
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
# SSL Certificates
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
ssl_trusted_certificate /path/to/chain.pem;
}
我的链接:
第三个
server
块指定了一个ssl
服务器,但没有指定使用哪个证书。至少,你需要从第四个server
块中复制ssl_certificate
和ssl_certificate_key
语句,或者将这些语句移到两个server
块之外。参见本文档
- Richard Smith 2019-06-19
2 个回答
#1楼
已采纳
得票数 32
你的server
部分缺少了ssl_certificate
和ssl_certificate_key
的声明。
你需要有一个.crt
和一个.key
的文件,以便与ssl一起运行。
它看起来应该是这样的
server {
listen 80;
listen 443 default_server ssl;
ssl_certificate /etc/nginx/certs/default.crt;
ssl_certificate_key /etc/nginx/certs/default.key;
... other declarations
}
#2楼
得票数 -6
有同样的问题。 添加指令
ssl on;
解决了我的问题。
我的做法:当配置
ssl_certificate
于server
时,需要sss on;
。当配置ssl_certificate
于http
时,不需要sss on;
。
- RJ.Hwang 2021-10-25