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

时间:2016-09-20 05:57:37

标签: networking nginx localhost port

我正在尝试运行Nginx,但我收到以下错误:

  

bind()到0.0.0.0:80失败(10013:尝试访问a   套接字以其访问权限禁止的方式)

请提供一些帮助,说明我需要做些哪些改变才能让它发挥作用?

我尝试在80以外的端口上运行,但它确实有效。但我需要它在80上运行。

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

6 个答案:

答案 0 :(得分:40)

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

server {
    listen       8070;
    ...
}

启动后,你应该可以点击localhost:8070。

答案 1 :(得分:4)

您必须是管理员或root才能绑定端口80.如果您无法以root身份运行,则可以执行的操作是您的应用程序侦听其他端口(如8080),然后将指向80的消息重定向到8080。您正在使用Linux,您使用iptables重定向消息。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

如果用户正在使用 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"]

答案 4 :(得分:0)

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端口。

问题解决了!!!

答案 5 :(得分:0)

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

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