Nginx监听非80端口反向代理80端口出现跳转错误

原文:解决Nginx监听非80端口反向代理80端口出现跳转错误

Nginx通过二级目录(路径)映射不同的反向代理,规避IP+端口访问

Windows Sever关于80端口之争

 

最近发布nginx时有一台服务器80端口始终不可用,IIS中已经屏蔽了80nginx 依然无法使用,日志记录如下

 

25008#8028: 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端口占用状况

netstat -ano | findstr ":80 "

发现被system占用了 PID=4 (windows系统内核组件)

 

修改注册表禁止system占用80端口

regedit 打开注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP

找到项Start,将其值改为0

重启系统,System进程就不会占用80端口了。nginx就可以使用80端口启动了.

 

注意事项:

默认IIS 和Nginx 80端口只能存在一个 即使是多个域名也会出现冲突,因为他们都默认监听了本机所有IP列表。

解决方法:

1.方法一:如果是多IP服务器则可以单独限定IP,使得IIS Nginx使用不同IP

nginx设置监听IP和端口使用listen  (只有IP时则默认端口为80,只有端口时则默认当前服务器所有IP)

listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000;

2.方法二:将所有的web服务器都通过nginx进行代理转发 其他web服务器使用非80端口

如果只有一个IP的情况下则只能使用该方法

 

小知识:

默认情况下安装了IIS服务器角色的Windows系统,其80端口就被占用了。但是占用80端口的进程却不是WWW Service更不是IIS Admin Sevice,而是处于kernel地位的Http.sys。通过命令netstat -ano可以轻易发现占用80端口的是PID为4的System进程。该进程是Winodws NT系统的内核进程的别名。硬件系统启动并完成引导后载入的Windows系统内核和其他重要的系统文件,其中包含http.sys。http.sys准确来说是实现http协议的组件,不是一个Windows服务,在系统进程中无法找到,在系统的服务中也无法找到,但却是IIS的重要组件WWW Service所依的关键组件。

 

posted @ 2018-09-21 10:30  Merray  Views(128)  Comments(0Edit  收藏  举报