nginx [emerg] duplicate listen options for 0.0.0.0:443 错误

Posted mrshao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx [emerg] duplicate listen options for 0.0.0.0:443 错误相关的知识,希望对你有一定的参考价值。

今天提交一个系统到测试服,测试服php版本7.2,laravel的8.0要7.3以上,测试服项目太多,还有很多很古老的项目,不好轻易升级,就打算放到一个不太重要的项目机器上,他俩共用一台机器,那个php版本比较高

操作是直接建立好发布系统,更新代码到新服务器

然后解析域名,copy一个nginx配置出来,修改下域名、路径和日志,重启时报nginx for 0.0.0.0:443 错误,nginx: [emerg] duplicate listen options for 0.0.0.0:443 in /nginx/conf.d/xxx.com.conf:3

查了下:
大概是说重复的选项,那哪里重复了呢?

default_server,直接copy的第一个站点,第二个修改时也有default_server

很明显,只能有一个默认服务器

如果存在default_server参数,将使服务器成为指定地址:端口对的默认服务器。

然后还说,listen指令可以具有特定于与套接字相关的系统调用的几个附加参数。它们可以在任何监听指令中指定,但对于给定地址:端口对只能指定一次。

所以,应删除第二站站点的default,尝试后问题解决

参考一原文地址:https://github.com/alibaba/te...

参考示例:

第一个

server {
    listen 443 ssl http2 fastopen=3;
    server_name  www.example.me;

可以保持不变 或者 保险可以加个default, 改成

server {
    listen 443 default ssl http2 fastopen=3;
    server_name  www.example.me;

后面所有的 listen 443 ssl 把 ssl 部分删了, 只要 listen 443 就行

server {
    listen 443;
试试这样可不可以, 我没来时间测试

参考二原文地址:http://mailman.nginx.org/pipe...

Socket can\'t be in ssl mode for some servers and in non-ssl for 
others, so there is no need to specify "ssl" argument for 
non-default servers.  I.e. this will work with ssl in both 
servers:

server {
    listen 443 default ssl;
    ...
}

server {
    listen 443;
    ...
}

In your first configuration nginx was able to detect that you used 
meaningless "ssl" argument in second server and complained.  In 
second configuration it wasn\'t able to detect meaningless "ssl 
on;" statement.  This is the only difference.

Maxim Dounin

以上是关于nginx [emerg] duplicate listen options for 0.0.0.0:443 错误的主要内容,如果未能解决你的问题,请参考以下文章

nginx: [emerg] cannot load certificate “t“: BIO_new_file() failed (SSL: error:0200100D:system ...:

nginx: [emerg] cannot load certificate “t“: BIO_new_file() failed (SSL: error:0200100D:system ...:

如何更正'nginx:[emerg]“流”指令在这里不允许'

[emerg]: getpwnam(“nginx”) failed

nginx - nginx:[emerg] bind()到[::]:80失败(98:地址已经在使用中)

启动Nginx报错nginx: [emerg] getpwnam(