Sprawdzenie portu 80 pozwala ustalić, czy Twój serwer WWW jest dostępny przez HTTP - protokół, który przeglądarki używają domyślnie, gdy wpisujesz zwykły adres URL bez "https://". Jeśli port 80 jest zablokowany lub nic na nim nie nasłuchuje, użytkownicy zobaczą błąd połączenia, a Twoja strona przestanie działać. Oto jak dokładnie zdiagnozować i naprawić ten problem.
Spis treści
Do czego służy port 80
Port 80 to domyślny port TCP dla
HTTP (Hypertext Transfer Protocol)
. Gdy przeglądarka łączy się z
http://example.com
, automatycznie kieruje żądanie na port 80 adresu IP tego serwera. Oprogramowanie serwera - Apache, Nginx, IIS, Caddy lub cokolwiek innego - musi aktywnie nasłuchiwać na porcie 80, żeby połączenie mogło się powieść.
Port 80 jest zdefiniowany w oficjalnym rejestrze portów IANA i ustandaryzowany w RFC 9110. Jest to port "dobrze znany" - numery 0-1023 są zarezerwowane dla usług systemowych i wymagają podwyższonych uprawnień do powiązania na Linux/macOS.
Jak sprawdzić, czy port 80 jest otwarty
Istnieje kilka sposobów sprawdzenia, czy port 80 jest otwarty - zależnie od tego, czy testujesz lokalnie (na samym serwerze) czy zdalnie (z innej maszyny lub przez internet).
Za pomocą telnet
Telnet to najszybszy ręczny test. Uruchom go z dowolnej maszyny mającej dostęp sieciowy do docelowego hosta:
telnet example.com 80
Jeśli port 80 jest otwarty i serwer WWW nasłuchuje, zobaczysz pusty kursor lub baner HTTP. Jeśli port jest zamknięty lub filtrowany, otrzymasz komunikat "Connection refused" albo polecenie zawiesi się do czasu przekroczenia limitu.
Za pomocą curl
curl daje więcej szczegółów - pokazuje rzeczywistą odpowiedź HTTP:
curl -v http://example.com
Flaga
-v
wyświetla szczegółowe informacje, w tym handshake TCP i nagłówki odpowiedzi. Udane połączenie pokazuje
* Connected to example.com (93.184.216.34) port 80
. Błąd połączenia pokazuje
curl: (7) Failed to connect
.
Za pomocą nmap
nmap to złoty standard skanowania portów. Aby sprawdzić konkretnie port 80:
nmap -p 80 example.com
Wynik pokaże jeden z trzech stanów: open (coś nasłuchuje), closed (port jest osiągalny, ale nic na nim nie nasłuchuje) lub filtered (firewall odrzuca pakiety i nmap nie może ustalić stanu portu).
Za pomocą PowerShell na Windows
Test-NetConnection -ComputerName example.com -Port 80
Polecenie
Test-NetConnection
w PowerShell zwraca czytelną wartość
TcpTestSucceeded : True
lub
False
, co ułatwia automatyzację skryptami. Pełny przewodnik po sprawdzaniu portów w Windows znajdziesz w artykule
sprawdzanie otwartych portów w Windows
.
Sprawdzanie portu 80 za pomocą netstat
Gdy jesteś bezpośrednio na serwerze,
netstat
pokazuje dokładnie, który proces jest przypisany do portu 80. To właściwe narzędzie, gdy chcesz odpowiedzieć na pytanie: "czy coś faktycznie nasłuchuje na porcie 80 na tej maszynie?"
Linux / macOS
sudo netstat -tlnp | grep :80
Opis flag:
-
-t- tylko połączenia TCP -
-l- tylko gniazda nasłuchujące -
-n- wyświetl adresy numerycznie (szybciej, pomija wyszukiwanie DNS) -
-p- pokaż nazwę procesu i PID
Typowy wynik wygląda tak:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx
. Oznacza to, że nginx (PID 1234) nasłuchuje na wszystkich interfejsach na porcie 80.
Na nowoczesnych systemach Linux
ss
jest szybsze i zalecane zamiast
netstat
:
sudo ss -tlnp | grep :80
Windows
netstat -ano | findstr :80
Polecenie wyświetla wszystkie połączenia na porcie 80 wraz z ich PID. Aby znaleźć nazwę procesu na podstawie PID (np. PID 4892):
tasklist /fi "pid eq 4892"
Diagnozowanie blokady portu 80 przez firewall
Blokada przez firewall to najczęstszy powód, dla którego port 80 wydaje się zamknięty z zewnątrz, mimo że serwer WWW działa poprawnie lokalnie. Blokada może wystąpić na trzech poziomach:
| Poziom | Gdzie sprawdzić | Narzędzie |
|---|---|---|
| Firewall systemowy (serwer) | iptables / ufw (Linux), Windows Defender Firewall |
iptables -L -n
lub reguły Windows Firewall
|
| Grupa zabezpieczeń w chmurze | AWS EC2 Security Groups, Azure NSG, GCP Firewall Rules | Reguły ruchu przychodzącego w konsoli chmury |
| Firewall sieciowy / ISP | ACL routera, blokowanie portów przez ISP dla połączeń domowych | Kontakt z ISP lub zewnętrzny skaner portów |
Sprawdzanie iptables na Linux
sudo iptables -L INPUT -n -v | grep 80
Jeśli widzisz regułę DROP lub REJECT dla portu 80, to właśnie ona jest przyczyną problemu. Aby zezwolić na port 80 za pomocą ufw:
sudo ufw allow 80/tcp
sudo ufw reload
Sprawdzanie grup zabezpieczeń AWS
Jeśli Twój serwer działa na EC2, przejdź do konsoli EC2 - Security Groups - Inbound rules. Potrzebujesz reguły zezwalającej na TCP port 80 z
0.0.0.0/0
(lub z określonego zakresu IP). Bez tej reguły cały ruch na porcie 80 jest odrzucany, zanim w ogóle dotrze do firewalla systemowego.
Głębsze omówienie diagnostyki portów po stronie Linux znajdziesz w kompletnym przewodniku po sprawdzaniu otwartych portów na Linux , który szczegółowo opisuje iptables, ufw, firewalld i nftables.
Port HTTP nie odpowiada - najczęstsze przyczyny i rozwiązania
Gdy port HTTP nie odpowiada, problem zwykle należy do jednej z poniższych kategorii:
-
Serwer WWW nie działa
- Sprawdź za pomocą
systemctl status nginxlubsystemctl status apache2. Jeśli jest zatrzymany, uruchom go:sudo systemctl start nginx. -
Serwer WWW uległ awarii podczas uruchamiania
- Sprawdź logi:
sudo journalctl -u nginx --since "10 minutes ago". Błąd składni konfiguracji lub konflikt portów będzie tam widoczny. -
Serwer nasłuchuje tylko na localhost
- Jeśli konfiguracja serwera zawiera
listen 127.0.0.1:80zamiastlisten 0.0.0.0:80, nie będzie akceptował połączeń zewnętrznych. Popraw adres bind w konfiguracji serwera. - Port 80 jest już zajęty - Inny proces zajął port 80 przed uruchomieniem Twojego serwera WWW. Użyj netstat, żeby go zidentyfikować, a następnie zatrzymaj go lub zmień konfigurację jednej z usług.
-
SELinux lub AppArmor blokuje powiązanie
- Na systemach RHEL/CentOS SELinux może uniemożliwić niestandardowemu procesowi powiązanie z portem 80. Sprawdź
ausearch -m AVC -ts recentw poszukiwaniu odmów dostępu.
curl http://127.0.0.1
bezpośrednio na serwerze. Jeśli to działa, ale połączenia zewnętrzne zawodzą, problem leży w firewallu lub regule sieciowej - nie w samym serwerze WWW.
Testowanie dostępności portu 80 spoza sieci
Testowanie z własnej maszyny może być mylące - możesz być w tej samej sieci LAN co serwer, omijając tym samym reguły firewalla dotyczące ruchu zewnętrznego. Aby sprawdzić dostępność portu 80 tak, jak doświadczyłby tego rzeczywisty użytkownik, potrzebujesz testu z zewnątrz.
Możesz sprawdzić nagłówki odpowiedzi HTTP swojego serwera z zewnątrz za pomocą naszego narzędzia do sprawdzania nagłówków HTTP . Pobiera ono nagłówki z podanego URL i pokazuje dokładnie to, co otrzymuje przeglądarka - kody statusu, typ serwera, łańcuchy przekierowań i więcej - wszystko z zewnętrznego punktu obserwacji.
Inne zewnętrzne opcje:
- Internetowe skanery portów - Serwisy takie jak portchecker.co lub canyouseeme.org pozwalają wpisać adres IP i numer portu, aby przetestować dostępność z ich serwerów.
-
Z VPS lub powłoki chmurowej
- Uruchom darmową instancję chmurową w innym regionie i wykonaj stamtąd
nc -zv your-server-ip 80. -
Za pomocą nc (netcat) lokalnie
-
nc -zv example.com 80daje szybki wynik otwarty/zamknięty bez instalowania czegokolwiek dodatkowego na większości systemów Linux/macOS.
Port 80 a port 443 - kiedy który ma znaczenie
Port 443 obsługuje HTTPS (szyfrowany HTTP przez TLS). Większość nowoczesnych stron natychmiast przekierowuje cały ruch z portu 80 na port 443. Mimo to port 80 nadal ma znaczenie z kilku powodów:
- Weryfikacja domeny ACME/Let's Encrypt HTTP-01 - certbot Let's Encrypt używa portu 80 do weryfikacji własności domeny. Jeśli port 80 jest zablokowany, wystawienie certyfikatu się nie powiedzie.
- Usługi wewnętrzne bez TLS - Wiele wewnętrznych narzędzi, agentów monitorujących i mikroserwisów komunikuje się przez zwykły HTTP na porcie 80 w ramach sieci prywatnej.
- Starsze klienty i urządzenia IoT - Niektóre urządzenia wbudowane i starsze klienty nie obsługują TLS i korzystają z portu 80.
- Infrastruktura przekierowań - Nawet jeśli serwujesz wszystko przez HTTPS, potrzebujesz otwartego portu 80, żeby przechwytywać i przekierowywać żądania HTTP zamiast zostawiać użytkowników z błędem połączenia.
Sprawdź natychmiast, co zwraca port 80
Nasze narzędzie do sprawdzania nagłówków HTTP pobiera na żywo odpowiedź z dowolnego URL - możesz potwierdzić, że port 80 jest otwarty, sprawdzić łańcuchy przekierowań i zobaczyć dokładne kody statusu wysyłane przez Twój serwer - bez użycia wiersza poleceń.
Sprawdź nagłówki HTTP teraz →
Na Linux uruchom
sudo ss -tlnp | grep :80
lub
sudo netstat -tlnp | grep :80
. Oba polecenia pokazują nazwę procesu i PID przypisany do portu 80. Na Windows użyj
netstat -ano | findstr :80
, żeby uzyskać PID, a następnie
tasklist /fi "pid eq [PID]"
, żeby znaleźć nazwę procesu. Typowe procesy zajmujące ten port to nginx, apache2, IIS i serwery Node.js.
Użyj tych samych poleceń netstat lub ss, ale filtruj dla 8080 zamiast 80:
sudo ss -tlnp | grep :8080
na Linux lub
netstat -ano | findstr :8080
na Windows. Port 8080 to popularny alternatywny port HTTP używany przez serwery deweloperskie, Tomcat, Jenkins i proxy. Jeśli coś jest już do niego przypisane, musisz to zatrzymać lub skonfigurować nową usługę na innym porcie.
Na dedykowanych serwerach WWW i instancjach VPS - tak, port 80 jest zazwyczaj otwarty i oczekiwany. Na domowych połączeniach internetowych wielu dostawców ISP blokuje przychodzący port 80, żeby uniemożliwić klientom hostowanie publicznych serwerów w domu. Na instancjach chmurowych port 80 jest często domyślnie zamknięty w grupie zabezpieczeń, dopóki nie dodasz jawnie reguły ruchu przychodzącego, która go odblokuje.
Spoza serwera użyj
nmap -p 80 your-server-ip
lub
telnet your-server-ip 80
. Bezpośrednio na serwerze użyj
ss -tlnp | grep :80
, żeby potwierdzić, że coś nasłuchuje. Sprawdź też reguły firewalla - na Linux z ufw uruchom
sudo ufw status
, żeby zobaczyć, czy port 80 jest wymieniony jako dozwolony.
Na Linux z ufw:
sudo ufw allow 80/tcp
. Bezpośrednio przez iptables:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
. Na Windows dodaj regułę ruchu przychodzącego w Windows Defender Firewall dla TCP port 80. Na serwerze chmurowym dodaj regułę ruchu przychodzącego w grupie zabezpieczeń lub sieciowej grupie zabezpieczeń, zezwalającą na TCP port 80 z żądanego zakresu źródłowego.
Port 80 jest otwarty, gdy serwer WWW jest skonfigurowany do obsługi ruchu HTTP, co jest standardem dla każdej publicznie dostępnej strony. Pozostaje też otwarty na serwerach, które przekierowują HTTP na HTTPS (port 443), ponieważ samo przekierowanie wymaga przyjęcia początkowego połączenia na porcie 80. Narzędzia do odnawiania certyfikatów, takie jak certbot Let's Encrypt, również wymagają portu 80 do weryfikacji domeny metodą HTTP-01.
Otwórz Windows Defender Firewall z zabezpieczeniami zaawansowanymi, kliknij "Reguły przychodzące", a następnie "Nowa reguła". Wybierz "Port", zaznacz TCP, wpisz 80 jako konkretny port lokalny, wybierz "Zezwalaj na połączenie", zastosuj do wszystkich profili (Domena, Prywatny, Publiczny) i nadaj regule nazwę. Alternatywnie uruchom to w wierszu poleceń PowerShell z podwyższonymi uprawnieniami:
New-NetFirewallRule -DisplayName "HTTP Port 80" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
.
Tak, na Linux i macOS port 80 jest portem uprzywilejowanym (porty 0-1023 wymagają uprawnień roota lub capability CAP_NET_BIND_SERVICE do powiązania). Oznacza to, że zwykły proces użytkownika nie może nasłuchiwać na porcie 80 bez podwyższonych uprawnień. Serwery WWW takie jak nginx i Apache są zazwyczaj uruchamiane jako root w celu powiązania z portem 80, a następnie przełączają się na użytkownika z niższymi uprawnieniami do obsługi żądań. Na Windows nie istnieje odpowiednie ograniczenie dla portu 80.
Port 80 (HTTP) jest używany zamiast 443 (HTTPS) w sytuacjach, gdy TLS jest zbędny lub niepraktyczny - na przykład w mikroserwisach wewnętrznych w zaufanej sieci prywatnej, lokalnych środowiskach deweloperskich lub urządzeniach IoT bez obsługi TLS. Port 80 jest też wymagany do weryfikacji certyfikatów Let's Encrypt metodą HTTP-01. W przypadku każdej publicznie dostępnej strony zdecydowanie zalecany jest port 443 z TLS, a port 80 powinien pozostać otwarty wyłącznie na potrzeby przekierowań.
Nie, to różne porty. Port 80 to przypisany przez IANA standard dla HTTP i jest używany automatycznie przez przeglądarki, gdy nie podano numeru portu. Port 8000 to nieoficjalny alternatywny port powszechnie używany przez serwery deweloperskie - wbudowany serwer HTTP Pythona
python -m http.server
domyślnie używa portu 8000, podobnie jak serwer deweloperski Django. Aby dotrzeć do usługi na porcie 8000, musisz podać go jawnie w URL:
http://example.com:8000
.