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 失败。没有权限的主要内容,如果未能解决你的问题,请参考以下文章