• Digitální příslušenství
  • Server
  • Digitální život
  • Zásady ochrany osobních údajů
  • Kontaktujte nás
  1. Domov
  2. Článek
  3. sítě - Nelze získat přístup k webovému serveru Apache z místního...

sítě - Nelze získat přístup k webovému serveru Apache z místního...

Rsdaa 16/11/2021 1014

Provozuji webový server Apache na stolním počítači se systémem Trisquel 8 (založený na Ubuntu). Chtěl bych zpřístupnit server ostatním strojům/zařízením v mé lokální síti, ale nemohu přijít na to jak.

Když se pokusím připojit z jiného zařízení pomocí místní adresy IP serveru Apache, zobrazí se v prohlížeči chybové zprávy, například: ve Firefoxu na počítači Mac se zobrazí „Nelze se připojit. Firefox nemůže navázat spojení se serverem na localhost.'. Pokud se pokusím připojit pomocí prohlížeče DuckDuckGo na telefonu Android, zobrazí se 'Webová stránka není k dispozici. Webovou stránku na adrese http://localhost/ nelze načíst, protože: net::ERR_CONNECTION_REFUSED'.

Jedna z odpovědí navržená pomocí nmap ke zjištění, které porty jsou otevřené, což vrátilo následující výsledek:

$ nmap [LOCAL IP ADDRESS]Spouštění Nmap 7.01 ( https://nmap.org ) v 2019-10-12 09:25 Zpráva EDTNmap skenování pro [LOCAL IP ADDRESS]Host je aktivní (zpoždění 0,00013 s). Nezobrazeno: 998 uzavřené portyPORT STATE SERVICE22/tcp openssh80/tcp openhttpNmap hotovo: 1 IP adresa (1 hostitel nahoru) naskenována za 0,09 sekund

Ukazuje to tedy, že port 80 je otevřený pro http. Asi také stojí za zmínku, že mohu pingnout na stroj z jiného v lokální síti a jak ukazuje výstup nmap, mám otevřený další port pro ssh. Byl jsem ssh-ing na tomto stroji několik měsíců a funguje to dobře. Za tímto účelem jsem právě nainstaloval ssh-server a docela to fungovalo hned po vybalení.

Znamená to tedy, že je něco v nepořádku s nastavením Apache2 (na rozdíl od iptables/firewallu), když ssh funguje bez problémů?

Obsah iptables:

$ sudo iptables -LCchain INPUT (zásady ACCEPT)cíl prot opt ​​source destination ACCEPT tcp--kdekoliv tcp dpt:http ctstate NOVÝ,ESTABLISHEDChain FORWARD (policy ACCEPT)target prot opt ​​source destination Chain OUTPUT (policy ACCEPT)target prot opt ​​source destination

Obsah apache2.conf:

# Toto je hlavní konfigurační soubor serveru Apache. Obsahuje# konfigurační direktivy, které dávají serveru jeho instrukce.# Viz http://httpd.apache.org/docs/2.4/ pro podrobné informace o# direktivách a /usr/ share/doc/apache2/README.Debian o Debianu specifické# hints.### Shrnutí toho, jak funguje konfigurace Apache 2 v Debianu:# Konfigurace webového serveru Apache 2 v Debianu je zcela odlišná od# navrhovaného způsobu konfigurace webu upstreamem server. Důvodem je, že # výchozí instalace Apache2 Debianu se snaží učinit přidávání a odebírání modulů, # virtuálních hostitelů a zvláštních konfiguračních direktiv co nejflexibilnější, aby # byla automatizace změn a správa serveru co nejjednodušší. # Je to rozdělen do několika souborů tvořících hierarchii konfigurace popsanou níže #, všechny jsou umístěny v adresáři /etc/apache2/:## /etc/apache2/# |-- apache2.conf# | `--ports.conf# |-- mods-enabled# | |-- *.načíst# | `-- *.conf# |-- conf-enabled# | `-- *.conf# `-- sites-enabled# `-- *.conf### * apache2.conf je hlavní konfigurační soubor (tento soubor). Dává kousky dohromady# tím, že při spouštění # webového serveru zahrnuje všechny zbývající konfigurační soubory. ## * ports.conf je vždy zahrnut z hlavního konfiguračního souboru. Má# určovat naslouchací porty pro příchozí připojení, které lze # kdykoli upravit.## * Konfigurační soubory v adresářích mods-enabled/, conf-enabled/ a sites-enabled/# obsahují konkrétní konfigurační fragmenty, které spravují moduly,# globální konfigurační fragmenty, respektive konfigurace virtuálních hostitelů,#.## Aktivují se symbolickým propojením dostupných konfiguračních souborů z jejich# příslušných *-dostupných/ protějšků. Ty by měly být spravovány pomocí našich # pomocníků a2enmod/a2dismod, a2ensite/a2dissite a a2enconf/a2disconf. Podrobné informace najdete na# příslušných manuálových stránkách.## * Binární soubor se nazývá apache2. Kvůli použití proměnných prostředí, ve výchozí konfiguraci#, je třeba apache2 spustit/zastavit pomocí# /etc/init.d/apache2 nebo apache2ctl. Přímé volání /usr/bin/apache2 nebude # fungovat s výchozí konfigurací.# Globální konfigurace### ServerRoot: Horní část stromu adresářů, pod kterým jsou uchovávány# konfigurační soubory, soubory chyb a protokolů serveru.## POZNÁMKA! Pokud to zamýšlíte umístit na NFS (nebo jinak síť) # připojený souborový systém, přečtěte si prosím dokumentaci Mutex (dostupná# na );# ušetříte si spoustu problémů.## NEPŘIDÁVEJTE lomítko na konec cestu k adresáři.##ServerRoot "/etc/apache2"## Soubor uzamčení serializace přijetí MUSÍ BÝT ULOŽENÝ NA MÍSTNÍM DISKU.#Soubor Mutex:${APACHE_LOCK_DIR} default## PidFile: Soubor, do kterého má server zaznamenat své process# identifikační číslo při spuštění.# Toto je třeba nastavit v /etc/apache2/envvars#PidFile ${APACHE_PID_FILE}## Timeout: Počet sekund před vypršením časového limitu příjmu a odeslání.#Timeout 300## KeepAlive: Zda nebo nepovolit trvalá připojení (více než # jeden požadavek na připojení). Pro deaktivaci nastavte na "Off".#KeepAlive On## MaxKeepAliveRequests: Maximální počet povolených požadavků# během trvalého připojení. Nastavte na 0, abyste povolili neomezené množství.# Doporučujeme ponechat toto číslo vysoké pro maximální výkon.#MaxKeepAliveRequests 100## KeepAliveTimeout: Počet sekund, po které se čeká na další požadavek od # stejného klienta na stejném připojení.#KeepAliveTimeout 5# Ty je třeba nastavit v /etc/apache2/envvarsUser ${APACHE_RUN_USER}Skupina ${APACHE_RUN_GROUP}## Vyhledání názvu hostitele: Zaznamenejte jména klientů nebo pouze jejich IP adresy#, např. www.apache.org (zapnuto) nebo 204.62 .129.132 (vypnuto).# Výchozí je vypnuto, protože by bylo celkově lepší pro síť, kdyby lidé# museli tuto funkci vědomě zapnout, protože povolení znamená, že# každý klientský požadavek bude mít za následek ALESPOŇ jeden požadavek na vyhledání the# nameserver.#HostnameLookups Off# ErrorLog: Umístění souboru protokolu chyb.# Pokud v kontejneru # nezadáte direktivu ErrorLog, budou zde # zaznamenány chybové zprávy týkající se tohoto virtuálního hostitele.Pokud *učiníte* definujte soubor protokolu chyb pro # kontejner, chyby tohoto hostitele budou protokolovány tam a ne zde.#ErrorLog ${APACHE_LOG_DIR}/error.log## LogLevel: Řídí závažnost zpráv protokolovaných do error_log.# Dostupné hodnoty: trace8, ..., trace1, debug, info, notice, warning,# error, crit, alert, emerg.# Je také možné nakonfigurovat úroveň logu pro jednotlivé moduly, např.# "LogLevel info ssl:warn"#LogLevel warning# Zahrnout konfiguraci modulu:IncludeVolitelné mods-enabled/*.loadIncludeVolitelné mods-enabled/*.conf# Zahrnout seznam portů k poslechu onInclude ports.conf# Nastaví výchozí model zabezpečení serveru Apache2 HTTPD. Neumožňuje# přístup ke kořenovému souborovému systému mimo /usr/share a /var/www.# První z nich používají webové aplikace zabalené v Debianu,# posledně jmenovaný může být použit pro místní adresáře obsluhované webovým serverem. Pokud# váš systém poskytuje obsah z podadresáře v /srv, musíte zde povolit # přístup nebo v jakémkoli souvisejícím virtuálním hostiteli.Možnosti FollowSymLinksAllowOverride NoneRequire all deniedAllowOverride NoneRequire all enabledOptions Indexy FollowSymLinksAllowOverride All# Require all# Require ip68.192. Uděleno## Možnosti Indexy FollowSymLinks# AllowOverride None# Vyžadovat vše přiděleno## AccessFileName: Název souboru, který se má hledat v každém adresáři# pro další konfigurační direktivy. Viz také direktiva AllowOverride#.#AccessFileName .htaccess## Následující řádky zabránit # zobrazení souborů .htaccess a .htpasswd webovými klienty.#Vyžadovat vše odepřeno## Následující direktivy definují některé přezdívky formátu pro použití s# direktivou CustomLog.## Tyto direktivy se liší od definic Common Log Format tím, že používají %O# (skutečné bajty odeslané včetně hlaviček) místo %b (velikost # požadovaného souboru), protože to znemožňuje detekci částečných# požadavků.## Všimněte si, že použití %{X-Forwarded- For}i místo %h se nedoporučuje.# Místo toho použijte mod_remoteip.#LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer} i\" \"%{User-Agent}i\"" vhost_combinedLogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{ User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %O" commonLogFormat "%{Referer}i -> %U" refererLogFormat "%{User-agent}i" agent# Zahrnout adresáře ignoruje záložní soubory editorů a dpkg,# podrobnosti naleznete v README.Debian.# Zahrnout obecné úryvky příkazůIncludeOptional conf-enabled/*.conf# Zahrnout konfigurace virtuálního hostitele:ZahrnoutVolitelné stránky-povoleno/*.

Potřebuji AllowOverride All pod /var/www, protože se snažím spustit instanci Wordpressu a ta musí umět zapisovat na server Apache.

Apache2 určitě běží, protože mohu přistupovat k webovému obsahu pomocí 'localhost' z prohlížeče na místním počítači. Stav systemctl apache2 také ukazuje, že běží:

~$ stav systemctl apache2● apache2.service - LSB: webový server Apache2 Načteno: načteno (/etc/init.d/apache2; špatné; přednastaveno dodavatelem: povoleno)Drop-In: /lib/systemd/system/apache2.service. d └─apache2-systemd.conf Aktivní: aktivní (běží) od Čt 2019-10-10 20:01:44 EDT; před 5 minutami Dokumenty: man:systemd-sysv-generator(8)Proces: 1562 ExecStart=/etc/init.d/apache2 start (kód=ukončeno, stav=0/ÚSPĚCH) CGroup: /system.slice/apache2.service ├ ─1621 /usr/sbin/apache2 -k start ├─1624 /usr/sbin/apache2 -k start ├─1625 /usr/sbin/apache2 -k start ├─1626 /usr/sbin/apache2 -k start ├─167 /usr/sbin/apache2 -k start ├─1628 /usr/sbin/apache2 -k start └─2102 /usr/sbin/apache2 -k startOct 10 20:01:42 lee-Desktop systemd[1]: Spouštění LSB: Webový server Apache2...10. října 20:01:42 lee-Desktop apache2[1562]:* Spouštění webového serveru Apache httpd apache2Oct 10 20:01:43 lee-Desktop apache2[1562]: AH00558: Nelze spolehlivě určit apache2 plně kvalifikovaný název domény serveru pomocí 127.0.1.1. Globálně nastavte direktivu 'ServerName', aby byla tato zpráva potlačena 10. října 20:01:44 lee-Desktop apache2[1562]:*10. října 20:01:44 lee-Desktop systemd[1]: Spuštěn LSB: webový server Apache2.

Jak bylo navrženo v komentářích, zkusil jsem netstat --inet -a | grep apache2, ale nevrátil nic. Zřejmě je to neobvyklé, pokud běží apache2, protože by měl naslouchat na portu 80. Spustil jsem netstat -plunt | grep :80 a získal následující výstup:

$ sudo netstat -plunt | grep :80tcp6 00 :::80 :::*LISTEN1557/apache2

Znamená to, že Apache poslouchá, ale nic neslyší?

Pokud jde o konfigurace virtuálního hostitele, které byly také požadovány, jediným souborem v /etc/apache2/sites-enabled/ je 000-default.conf, jehož obsah je:

# Direktiva ServerName nastavuje schéma požadavku, název hostitele a port, který # server používá k identifikaci. Používá se při vytváření # adres URL přesměrování. V kontextu virtuálních hostitelů určuje ServerName#, jaký název hostitele se musí objevit v hlavičce Host: požadavku, aby# odpovídal tomuto virtuálnímu hostiteli. Pro výchozího virtuálního hostitele (tento soubor) tato # hodnota není rozhodující, protože se bez ohledu na to používá jako hostitel poslední instance.# Pro každého dalšího virtuálního hostitele ji však musíte explicitně nastavit.#ServerName www.example.comServerAdmin webmaster@localhostDocumentRoot /var/www/html# Dostupné úrovně protokolů: trace8, ..., trace1, ladění, info, upozornění, varování,# chyba, crit, alert, emerg.# Je také možné nakonfigurovat úroveň protokolu pro konkrétní# moduly, např. #LogLevel info ssl:warnErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined# Pro většinu konfiguračních souborů z conf-available/, které jsou# povoleny nebo zakázány na globální úrovni, je možné# obsahovat řádek pouze pro jednoho konkrétního virtuálního hostitele. Například následující řádek# povoluje konfiguraci CGI pro tohoto hostitele pouze# poté, co byl globálně zakázán pomocí "a2disconf".#Zahrnout conf-available/serve-cgi-bin.conf# vim: syntax=apache ts=4 sw= 4 sts=4 sr noet

Zkoušel jsem také spustit tail -f /var/log/apache2/*.log, ale při pokusu o připojení ze vzdáleného počítače se nic netiskne do protokolů.

Jak tedy mohu odstranit problémy s tím, co blokuje připojení? Existuje někde protokol, který by mě mohl osvětlit, proč je připojení odmítnuto az jakého důvodu?

Vyzkoušel jsem návrhy Jacoba ve své odpovědi, ale bohužel to problém nevyřešilo. Jakékoli další návrhy nebo pokyny by byly velmi oceněny!


PREV: Plex media server FAQ (často kladené otázky)

NEXT: Jak opravit běžné problémy se serverem Plex Media Server | Windows Central

Populární články

Žhavé články
Zpět na začátek