關於80端口號沖突的問題總結(全)


I.Port80簡介:

        80端口是為HTTP(HyperText Transport Protocol)即超文本傳輸協議開放的,此為上網沖浪使用次數最多的協議,主要用於WWW(World Wide Web)即萬維網傳輸信息的協議。 可以通過HTTP地址(即常說的“網址”)加“: 80”來訪問網站,因為瀏覽網頁服務默認的端口號都是80,因此只需輸入網址即可,不用輸入“: 80”了。

II.問題描述:

  80端口是一個最為頻繁訪問的端口號,甚為程序員開發更是經常遇到,比如我們最熟悉的數據庫系統服務進程就是默認訪問該端口的,還有比如Ngnix服務器默認端口也是80,所以當使用ngnix時發生端口號沖突了,應該怎么辦呢?以下見析。

III.原因:

  主要是與http協議有關的進程,進行網上訪問的系統級別的進程最頻繁占用80端口。比如Http.sys。它是http API的驅動組件,Http棧服務器。如果該端口被Http.sys占用,說明一些正在使用http.sys的應用程序在運行。

IV.解決辦法:

  1)使用命令查看哪個線程占用80端口

    win+R調出doc窗口,輸入cmd,繼續輸入"netstat -ano | more"或者“netstat -aon”

    2)尋找端口號

    找到“本地地址”欄為0.0.0.0:80的一行,在行的末尾有pid(進程id)為“4”。

  3)打開任務管理器(ctrl+alt+del)

    查看pid為4的線程,一般會顯示system占用;自然system是無法直接kill的。

    使用netsh命令查看端口使用狀態:”netsh http show servicetstate“。

    可以看到有兩個進程正在使用http功能。分別為 3164和3196。

    其中3196是sql server的report服務;進程3164對應的是一個svchost服務。

    兩者都可以關閉,數據庫服務的見下述解決方式。

   【擴展】:

    但是,50秒之后端口又會自動被占用了。【重新占用】

    從procmonitor中可以看到,每次關閉服務 BranchCache 每50s后就會繼續被svchost給調用起來。

    通過services表(服務表)中,我們發現這里的BranchCache 依賴了HTTP.SYS這個內核驅動。

    手動禁用即可。

  4)多版本解決方案:

    【分析】:

     1)SQL Server導致。其中很有可能是SQL Server Reporting Services (MSSQLSERVER),它是 SQL Server 的日志系統。

     2)IIS 服務。如果你電腦安裝了這個,很有可能它在運行着,那么它就占用着80端口。(打開IIS的方法:打開控制面板,點“卸載”,

      彈窗里左側有一個“打開或關閉windows功能”,再點開會有一個彈窗,找“Internet信息服務”,找到 Internet Information Services,

      點加號展開!因為直接點這個大項前面的小方塊,FTP服務器選項沒反應,我圖里的這幾個都勾上就行了。

      

      然后右下角點確定,IIS開啟成功了。

      關上:開始圖標那個win旁邊有個圈圈,點開輸入iis回車就能打開IIS管理器,右擊,點停止,IIS就算關上了。(win10系統)

     3)其他。(比如,迅雷等程序或者一些其他有上傳功能的軟件都會占用電腦的80端口)

    A.已知為數據庫進程占用,最常見:

    i.查看“任務管理器”進程欄或者詳細信息欄,有沒有數據庫有關的進程,直接kill就行。

    ii.打開【管理】->【服務和應用程序】->【服務】->找到“SQL Server Reporting Service",禁用或者手動皆可。

    以上可以解決基本上90%左右的占用問題。

    (一般來說,可能是近期安裝了數據庫或者升級了數據庫等軟件造成的,系統占用的端口一般都是微軟官方的產品占用的。)

    B.未知進程,即system進程(win7 system默認占用):

    i.禁用http.sys

    輸入net stop http,然后確認繼續操作,在輸入Sc config http start= disabled即可停止該項服務。

    ii.調出注冊表

    打開RegEdit:【開始】->【運行】->輸入【regedit】調出 ”注冊表“,

    找到”HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesHTTP“,

     找到一個DWORD值Start,將其改為0,重啟電腦,System進程將不會占用80端口。

    【備注】:殺掉進程的命令:taskkill /pid 4 /f ,其中 /f 表示強制關閉該進程。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM