我想通过 https 提供我的网站,因此我遵循了这个教程正如所给的。
在第 5 步中,sudo nginx -t
配置正确,结果为阳性。当我运行时,sudo systemctl restart nginx
出现了以下错误
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
当我检查 /var/log/nginx/error.log 中的错误日志时,显示此错误
2017/03/14 07:35:20 [emerg] 12111#12111:bind() 至 0.0.0.0:443 失败(98:地址已被使用)
2017/03/14 07:35:20 [emerg] 12111#12111:bind() 至 0.0.0.0:443 失败(98:地址已被使用)
2017/03/14 07:35:20 [emerg] 12111#12111:bind() 至 0.0.0.0:443 失败(98:地址已被使用)
2017/03/14 07:35:20 [emerg] 12111#12111:bind() 至 0.0.0.0:443 失败(98:地址已被使用)
2017/03/14 07:35:20 [emerg] 12111#12111:bind() 至 0.0.0.0:443 失败(98:地址已被使用)
2017/03/14 07:35:20 [emerg] 12111#12111:仍然无法绑定()
尝试过包括在内的技巧后ipv6only=on
,显然没有任何效果,现在我不知道该怎么办?
我的默认配置可用这里
请帮忙
答案1
看起来好像另一个进程打开了端口 tcp/443,并且 nginx 因此无法打开。您是否检查过 netstat 中是否已经打开了端口 443?
答案2
问题是,你的配置中有这个:
listen 80 default_server;
listen [::]:80 default_server;
这将执行以下操作:
1-我在端口 80 上启动服务器
结果:确定
2 - 我在端口 [::]:80 上启动服务器
结果:失败
我认为您的第二行实际上是在 ivp4 和 ipv6 上调用了 listen 参数。请尝试以下操作:
listen 80 default_server;
listen [::]:80 ipv6only=on;
看看它是否有效。
顺便说一句,您还遗漏了配置中的一些非常重要的行。即:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;