Nginx监听非80端口反向代理80端口出现跳转错误
原文:解决Nginx监听非80端口反向代理80端口出现跳转错误
Nginx通过二级目录(路径)映射不同的反向代理,规避IP+端口访问
最近发布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所依的关键组件。