Nginx- 错误:绑定()到 0.0.0.0:80 失败。没有权限

Posted

技术标签:

【中文标题】Nginx- 错误:绑定()到 0.0.0.0:80 失败。没有权限【英文标题】:Nginx- error: bind() to 0.0.0.0:80 failed. permission denied 【发布时间】:2017-01-27 22:35:37 【问题描述】:

我正在尝试运行 nginx,但出现以下错误:

bind() to 0.0.0.0:80 failed (10013: 试图访问 访问权限禁止的套接字)

请提供一些帮助,说明我需要做哪些更改才能使其正常工作?

我试过在 80 以外的端口上运行,它可以工作。但我需要它在 80 上运行。

注意:我在 Windows 7 上以管理员身份运行命令提示符。

【问题讨论】:

(ubuntu) nginx: [emerg] bind() to 0.0.0.0:80 failed (13: permission denied)的可能重复 【参考方案1】:

我的 Tomcat 服务器在 80 端口上运行。更改了 conf\nginx.conf 文件中的端口号,它开始工作了。

【讨论】:

【参考方案2】:

这是一个老问题,但由于我最近遇到了这个问题,所以我想在这个问题中发布另一个可能的原因。

如果用户正在使用 Docker 并且已经尝试了上述所有建议的解决方案,并且想知道为什么端口 80 尝试绑定,尽管在您的配置中您将端口覆盖到非根端口,例如listen 8080; 似乎较新的 NGINX 映像在 /etc/nginx/conf.d 中有一个默认的 nginx.conf 文件。

示例:

$ grep -r 80 /etc/nginx/
/etc/nginx/conf.d/default.conf:    listen       80;

在我的情况下,我在 Dockerfile 中删除了它:

RUN set -x \
        && rm -f /etc/nginx/nginx.conf \
        && rm -f /etc/nginx/conf.d/default.conf

我的自定义配置的下一步:

COPY ["conf/nginx.conf", "/etc/nginx/nginx.conf"]

【讨论】:

【参考方案3】:

tl;博士

netsh http add iplisten ipaddress=::

面临类似的问题。在命令提示符下运行上述命令。 这应该会释放 80 端口,您就可以运行 nginx。说明: netsh http 命令用于查询和配置 HTTP.sys 设置和参数。添加 iplisten: 将新 IP 地址添加到 IP 侦听列表中,不包括端口号。"::" 表示任何 IPv6 地址。 有关更多 netsh http 命令,请参阅netsh http commands documentation. 希望这会有所帮助!

【讨论】:

我们如何使用 80 端口同时访问 IIS 和 nginx,因为我需要两者。如果这不可能,建议我如何访问没有端口号的应用程序,例如我们 nginx 正在侦听端口 8080,那么 url 是“localhost:8080”。而不是我想访问像 www.somename.com @Vishal R 您不能同时在单个端口上运行两台服务器。在不同的端口上启动 IIS,然后使用 nginx 反向代理它。参考这个:docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy @Midhunsai 希望对您有所帮助! netsh http add iplisten ipaddress=:: 这个命令有什么作用? 您还应该包括对该命令的简单解释,而不是“运行它就可以工作”。【参考方案4】:

请检查是否有另一个代理在端口 80 下运行 ---> 在我的情况下 IIS 作为反向代理运行,所以 nginx 无法启动..

停止IIS,启动NGXIN解决了问题

【讨论】:

对我来说是正确的解决方案。我有 apache 运行。谢谢【参考方案5】:
nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)

我遇到了类似的问题,我的 80 端口正在监听 IIS(Windows 机器)。停止 IIS 释放了 80 端口。

问题解决了……!!

【讨论】:

这可能会解决问题,但我建议您在 nginx.conf 更改端口,因为如果您重新启动电脑,您需要始终停止它 您可以将“万维网发布”服务标记为手动启动,这样IIS不会在重启时启动。【参考方案6】:

如果端口已被使用,您可以将默认端口 80 更改为其他未使用的端口(可能是 8070)。在 conf\nginx.conf 中:

server 
    listen       8070;
    ...

启动后,你应该可以访问 localhost:8070。

【讨论】:

【参考方案7】:

您必须是 admin 或 root 才能绑定端口 80。如果您不能以 root 身份运行,您可以做的事情是您的应用程序侦听其他端口,例如 8080,然后将定向到 80 的消息重定向到 8080。如果您使用的是 Linux,您使用 iptables 重定向消息。

【讨论】:

抱歉没有提到操作系统的细节。我正在使用 Windows 并以管理员身份运行命令提示符。请提供在 Windows 上解决此问题的任何方法。谢谢rodolk。

以上是关于Nginx- 错误:绑定()到 0.0.0.0:80 失败。没有权限的主要内容,如果未能解决你的问题,请参考以下文章

过滤规则

Bucketize 实值张量

数独小算法,测试通过(Java)

socks5 代理

聚类和matlab

IP地址 0.0.0.0 是什么意思?