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

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

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

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

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

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

【问题讨论】:

标签: networking nginx localhost port


【解决方案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。
        猜你喜欢
        • 1970-01-01
        • 2012-04-26
        • 1970-01-01
        • 2021-02-12
        • 2018-03-13
        • 2018-03-13
        • 2012-07-25
        • 2019-03-08
        相关资源
        最近更新 更多