1-我在端口 80 上启动服务器

1-我在端口 80 上启动服务器

我想通过 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;

相关内容