nginx没有';你不能在端口80上监听两次吗? 编辑:首先阅读以下内容:
除了可接受的答案外,在没有systemd的情况下启动nginx时也会出现这些错误。Kill nginx:nginx没有';你不能在端口80上监听两次吗? 编辑:首先阅读以下内容:,nginx,nginx-config,Nginx,Nginx Config,除了可接受的答案外,在没有systemd的情况下启动nginx时也会出现这些错误。Kill nginx:ps-ax | grep nginx→ 查找nginx主pid→ 杀死###;使用systemd运行nginx:systemctl启动nginx 如果systemctl未用于启动nginx,则systemctl stop nginx似乎不起作用(至少在我的服务器上是这样);因此,systemctl restart nginx在第二次尝试启动nginx时会出现此错误 关于我的设置: 我在Debi
ps-ax | grep nginx
→ 查找nginx主pid→ <代码>杀死###;使用systemd运行nginx:systemctl启动nginx
如果systemctl未用于启动nginx,则systemctl stop nginx似乎不起作用(至少在我的服务器上是这样);因此,systemctl restart nginx在第二次尝试启动nginx时会出现此错误
关于我的设置:
我在Debian 10上,Buster,有一台实时服务器。我已经测试了这两个域名,它们自己使用这些配置文件进行广播,但当两个配置文件都处于活动状态时,它们不会广播
我正在努力实现的目标:
如何使用nginx在一个ip地址上设置两个网站
错误消息:
nginx:[emerg]在/etc/nginx/sites enabled/example.com:22第2行中为0.0.0.0:80复制默认服务器
nginx:[emerg]在/etc/nginx/sites enabled/example.com:22第2行中为0.0.0.0:443复制默认服务器<代码>默认_服务器
用于端口443
nginx:[emerg]在/etc/nginx/sites enabled/example.com:23第3行中为[::]443复制侦听选项<代码>默认\u服务器
在一个文件中尝试为http2
,使用端口443
nginx:[emerg]在/etc/nginx/sites enabled/example.com:23中为[:]:80重复侦听选项<代码>默认\u服务器
在一个文件中尝试为http2
nginx:[emerg]在/etc/nginx/sites enabled/example.com:23中的无效参数“example.com”第3行:default\u server
尝试为example.com
配置文件(注释):
其中有两个文件(代码如下所示)。我的配置文件与下面的代码块完全相同,只有一个区别:在这两个文件中,example.com
是我拥有的真实、唯一的域名
我的配置文件位于/etc/nginx/sites available
,并且它们被符号链接到/etc/nginx/sites enabled
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/example.com; #example.com is different in both files.
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com; #example.com is different in both files.
location / {
try_files $uri $uri/ =404;
}
}
主要不和谐:
要求重写这些行或注释其中一行。重写要么无法解决错误,要么导致文件未公开提供(example.com无处可用)
总结:
这个问题似乎与第2行、第3行或第2行和第3行有关
本质上,所有主要的how-to要么明确告诉读者使用上面的代码——要么——他们没有提到这些行。正如错误消息所示,在同一IP地址和端口上不能有两个默认侦听器。从一个或两个服务器块中的listen
声明中删除default\u server
listen 80;
listen [::]:80 ipv6only=on;
当您在listen
指令上指定default\u server
标志时,nginx将使用该server
块来服务HTTPHost
头与任何其他服务器块中的server\u名称
不匹配的任何请求(或者请求根本缺少Host
头)。您可以在任何特定的IP:port组合上使用default\u server
标志,该组合作为listen
指令的参数仅使用一次。但您可以在不同的IP:端口组合上多次使用此标志
例如,假设您的服务器有多个网络接口:
server {
listen 1.2.3.4:80 default_server; # this will be default server block for any request coming to 1.2.3.4 IP address on port 80
...
}
server {
listen 5.6.7.8:80 default_server; # this will be default server block for any request coming to 5.6.7.8 IP address on port 80
...
}
server {
listen 80 default_server; # this will be default server block for any request coming to any other IP address (except 1.2.3.4 and 5.6.7.8) on port 80
...
}
工作示例:
通常,当我需要在同一台服务器上为多个站点提供服务时,我会使用以下配置(当然这是简化的,现在我们通常使用HTTPS和http://example.com
至https://example.com
重定向):
站点1配置文件
server {
listen 80;
server_name example1.com www.example1.com;
...
}
server {
listen 80;
server_name example2.com www.example2.com;
...
}
server {
listen 80 default_server;
server_name _;
return 444;
}
站点2配置文件
server {
listen 80;
server_name example1.com www.example1.com;
...
}
server {
listen 80;
server_name example2.com www.example2.com;
...
}
server {
listen 80 default_server;
server_name _;
return 444;
}
默认服务器配置文件
server {
listen 80;
server_name example1.com www.example1.com;
...
}
server {
listen 80;
server_name example2.com www.example2.com;
...
}
server {
listen 80 default_server;
server_name _;
return 444;
}
由于listen
指令上的default\u server
标志,当请求的Host
标头不包含我的一个站点名称(或者请求根本没有Host
标头)时,将使用第三个服务器块。我不希望访问者不知道他们正在访问的站点(通常是端口扫描程序、漏洞搜索程序等),因此我为他们使用特殊的nginx 444代码(无任何响应的紧密连接)。不能在同一地址上使用同一端口运行两个应用程序
您需要做的只是将应用程序的端口更改为80,而将其他应用程序的端口更改为3000
如果您希望应用程序仅使用80端口运行,而不只是从中删除默认文件
/etc/nginx/sites available/default
也可以选择从
/etc/nginx/sites enabled/default
你可以跑
sudo rm-rf/etc/nginx/sites available/default
sudo rm-rf/etc/nginx/sites enabled/default
现在,您可以在端口80上运行一个应用程序了。我是在一个IP上配置三个主机名时遇到这个问题的
我使用免费的ssl证书,它只能在一个主机名上签名。因此,我应用了三个ssl证书
server {
listen 443 backlog=50000;
server_name example1.com;
当我使用nginx-t
测试配置文件时,它显示
nginx:[emerg]0.0.0.0:443英寸的重复侦听选项
/etc/nginx/conf.d/example1_https.conf:2
nginx:配置文件/etc/nginx/nginx.conf测试失败
我通过从example3.com中删除backlog=50000
来修复它。是否要在同一个端口80上运行两个应用程序?我希望在站点中启用默认文件的备份。。。。但是它是从可用的站点中删除的(我认为如果它是从启用的站点中删除的,则没有效果)。事实上,在这种情况下,我可以在80端口上运行其中一个。端口80和端口443不是我可以用于broadcas的唯一端口吗