Windows下80端口被进程System占用的解决方法

本文介绍了在Windows服务器上如何配置Nginx监听80端口,实现代理转发到IIS,解决与SQLServer等服务端口冲突的问题。通过停止占用80端口的服务,修改配置文件,设置Nginx反向代理,可以实现一个域名对应多个站点,并利用Nginx进行负载均衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

我是windows下配置Nginx监听80端口做代理转发至IIS,遇到的此问题。

思路

思路就是windows服务器装Nginx,监听80或者443端口,网络请求请求到目标服务器后,先走Nginx,转发到localhost:10200,nginx做代理和反向代理。

目的

为什么要这么做呢?IIS站点绑证书不是很好吗?也能实现正常网络请求和响应,加个nginx不是多此一举吗?nginx实现了代理转发,我认为最好的一点就是一个域名可以绑多个站点,以前IIS一个证书绑一个站点,想加站点只能做子站点,nginx解决了此问题,轻松实现独立站点,一个域名,转发到不同端口就可以了。另外nginx还可以做负载均衡(Load Balance),打比方一个域名绑定到负载服务器,分发网络请求到两台Web服务器。

解决端口占用问题

System 4号进程占用80端口,除了IIS服务外,还有SQLServer服务也会监听80端口,把IIS和SQLServer的服务都停掉就解决了。

以下是CMD下常用命令:

1. 查看哪一个程序占用了80端口:

netstat -ano "80"

2. 查看一下当前的http服务状态:

netsh http show servicestate

可以看到PID进程号为3828,队列名称为WeChat的东西,正是我发布的IIS站点名。

如果80端口被占用可以通过此定位到是什么服务,比如下图:

上图是SQLServer的报告服务,可以去任务管理器>进程/服务里面定位到它,如图:

 

services.msc中可以把它设置成手动启动,免得重启都要重新停服务。我有这个主要是我本机安装了SQL Server。如图:

 3. 查看80端口占用情况:

netstat  -ano | findstr 0.0.0.0:80

如图:

 

停掉IIS

 IIS也会占用80端口,停掉他。

注意还有两个IIS的服务也一并停掉,如图:

 基本做了这些80端口就能监听上了,如果有其他程序占用就来一套,查进程,PID,停服务,

Nginx监听80端口

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://127.0.0.1:10200;
        }
		
		#location / {
        #    root   html;
        #    index  index.html index.htm;
        #}
		
		#location /WeChat/Index {
        #    proxy_pass   http://127.0.0.1:10200;
        #}


        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
     
    }

CMD下检验一下nginx.conf是否有有问题:

C:\wwwroot\nginx-1.21.1>nginx -t
nginx: the configuration file C:\wwwroot\nginx-1.21.1/conf/nginx.conf syntax is ok
nginx: configuration file C:\wwwroot\nginx-1.21.1/conf/nginx.conf test is successful

C:\wwwroot\nginx-1.21.1>

没毛病,reload一下,nginx.conf配置生效

C:\wwwroot\nginx-1.21.1>nginx -s reload

C:\wwwroot\nginx-1.21.1>

借鉴的原文地址:https://www.cnblogs.com/firstdream/p/8057646.html

这老哥和我遇到同样问题,都是除了IIS以外还有SQL Server Report占用80问题。网上还有说改注册表http 3改0也试了没解决。感谢这位老哥分享。

仅供学习参考,如有侵权联系我删除。

### 解决 Windows80 端口system 进程占用方法 #### 方法一:通过命令行工具定位并终止占用端口进程 为了确认具体是哪一个进程占用80 端口,可以先执行如下命令: ```cmd netstat -ano | findstr "80" ``` 这条指令会返回类似 `TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 7796` 的输出,其中最后一列即为占用端口进程 ID (PID)[^1]。 接着可以通过任务管理器结束此 PID 对应的任务;或者直接在命令提示符窗口输入以下命令强制关闭指定 PID 的进程: ```cmd taskkill /F /PID <这里替换为实际查得的PID> ``` 请注意,在某些情况下,即使找到了具体的 PID 并尝试终止它,也可能因为权限不足而无法成功操作。此时建议重启计算机再试一次,或考虑其他替代方案。 #### 方法二:调整系统 HTTP.sys 配置 有时 80 端口是由系统的 WebDAV 或者 IIS 功能所预留使用的。对于这种情况,可采取下列措施来解决问题: 1. 停止当前正在运行的服务实例: ```cmd net stop http ``` 2. 设置 HTTP 协议栈不随系统自启加载: ```cmd sc config http start= disabled ``` 上述两条语句能够有效阻止 HTTP.sys 在下次开机时再次抢占 80端口资源[^3]。 另外一种情况可能是由于开启了 World Wide Web Publishing Service(W3SVC),这同样可能导致冲突发生。因此也可以试着停用 W3SVC 来排除干扰因素。 #### 方法三:更改应用软件监听端口设置 当确实有必要保留原有服务的同时又要部署新的 web 应用时,则可以选择改变应用程序自身的配置参数使其不再依赖于标准的 80 端口工作。比如针对 Tomcat 用户来说,只需编辑其安装目录下的 conf/server.xml 文件中的 Connector 节点属性即可实现目的[^4]: ```xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> ``` 以上就是几种常见的应对策略,希望能够帮助到遇到此类困扰的朋友!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值