• Дигитални аксесоари
  • сървър
  • Дигитален живот
  • Политика за поверителност
  • Свържете се с нас
  1. Home
  2. Article
  3. работа в мрежа - Невъзможен достъп до уеб сървъра на Apache от локален ...

работа в мрежа - Невъзможен достъп до уеб сървъра на Apache от локален ...

Rsdaa 16/11/2021 954

Използвам уеб сървър Apache на настолна машина, изпълняваща Trisquel 8 (базиран на Ubuntu). Бих искал да направя сървъра достъпен за други машини/устройства в моята локална мрежа, но не мога да разбера как.

Когато се опитам да се свържа от друго устройство, използвайки локалния IP адрес на сървъра Apache, получавам съобщения за грешка в браузъра, като например: във Firefox на Mac получавам „Не мога да се свържа. Firefox не може да установи връзка със сървъра на localhost.'. Ако се опитам да се свържа с помощта на браузъра DuckDuckGo на телефон с Android, получавам „Уеб страницата не е налична. Уеб страницата на http://localhost/ не може да бъде заредена, защото: net::ERR_CONNECTION_REFUSED'.

Един от отговорите предлага използването на nmap, за да видите кои портове са отворени, което връща следния резултат:

$ nmap [ЛОКАЛЕН IP АДРЕС]Стартиране на Nmap 7.01 (https://nmap.org) в 2019-10-12 09:25 EDTNmap сканиран отчет за [ЛОКАЛЕН IP АДРЕС]Хостът работи (0,00013 s латентност). Не е показано: 998 затворени портовеPORT STATE SERVICE22/tcp openssh80/tcp openhttpNmap готово: 1 IP адрес (1 хост) сканиран за 0,09 секунди

И така, показва, че порт 80 е отворен за http. Вероятно също си струва да се спомене, че мога да пингвам машината от друга в локалната мрежа и, както показва изходът от nmap, имам друг отворен порт за ssh. Използвам ssh-ing на тази машина от няколко месеца и това работи добре. За това току-що инсталирах ssh-сървъра и той работи почти веднага.

И така, това означава ли, че нещо не е наред с настройката на Apache2 (за разлика от iptables/защитна стена), като се има предвид, че ssh работи без проблеми?

Съдържание на iptables:

$ sudo iptables -LChain INPUT (политика ACCEPT)target prot opt ​​източник дестинация ACCEPT tcp--навсякъде навсякъде tcp dpt:http ctstate NEW,ESTABLISHEDChain FORWARD (политика ACCEPT)target prot opt ​​източник дестинация Chain OUTPUT (политика ACCEPT)target prot opt ​​източник дестинация

Съдържание на apache2.conf:

# Това е основният конфигурационен файл на сървъра на Apache. Той съдържа # конфигурационните директиви, които дават инструкции на сървъра. # Вижте http://httpd.apache.org/docs/2.4/ за подробна информация относно# директивите и /usr/ share/doc/apache2/README.Debian относно специфичните за Debian# съвети.### Резюме на това как работи конфигурацията на Apache 2 в Debian:# Конфигурацията на уеб сървъра на Apache 2 в Debian е доста различна от# предложения от upstream начин за конфигуриране на мрежата сървър. Това е така, защото инсталацията на Debian по подразбиране Apache2 се опитва да направи добавянето и премахването на модули, # виртуални хостове и допълнителни директиви за конфигурация възможно най-гъвкави, за да # направи автоматизирането на промените и администрирането на сървъра възможно най-лесно. # Това е разделен на няколко файла, образуващи конфигурационната йерархия, очертана# по-долу, всички разположени в директорията /etc/apache2/:## /etc/apache2/# |-- apache2.conf# | `--ports.conf# |-- mods-enabled# | |-- *.load# | `-- *.conf# |-- conf-разрешен# | `-- *.conf# `-- sites-enabled# `-- *.conf### * apache2.conf е основният конфигурационен файл (този файл). Той събира частите# заедно, като включва всички останали конфигурационни файлове при стартиране на # уеб сървъра.## * ports.conf винаги се включва от основния конфигурационен файл. Той# трябва да определя слушащи портове за входящи връзки, които могат да бъдат# персонализирани по всяко време.## * Конфигурационните файлове в mods-enabled/, conf-enabled/ и sites-enabled/# директориите съдържат конкретни конфигурационни фрагменти, които управляват модули,# глобални конфигурационни фрагменти или конфигурации на виртуален хост,# съответно.## ​​Те се активират чрез символно свързване на налични конфигурационни файлове от техните# съответни *-available/ двойници. Те трябва да се управляват с помощта на нашите # помощници a2enmod/a2dismod, a2ensite/a2dissite и a2enconf/a2disconf. Вижте# техните съответни man страници за подробна информация.## * Двоичният файл се нарича apache2. Поради използването на променливи на средата, в# конфигурацията по подразбиране, apache2 трябва да се стартира/спре с# /etc/init.d/apache2 или apache2ctl. Директното извикване на /usr/bin/apache2 няма# да работи с конфигурацията по подразбиране.# Глобална конфигурация### ServerRoot: Горната част на дървото на директорията, под която се съхраняват# конфигурацията на сървъра, грешките и регистрационните файлове.## ЗАБЕЛЕЖКА! Ако възнамерявате да поставите това на NFS (или по друг начин мрежова)# монтирана файлова система, моля, прочетете документацията на Mutex (достъпна# на );# ще си спестите много проблеми.## НЕ добавяйте наклонена черта в края на пътя на директорията.##ServerRoot "/etc/apache2"## Файлът за заключване на сериализацията за приемане ТРЯБВА ДА СЕ СЪХРАНЯВА НА ЛОКАЛЕН ДИСК.#Mutex файл:${APACHE_LOCK_DIR} по подразбиране## PidFile: Файлът, в който сървърът трябва да запише своите процес# идентификационен номер, когато стартира.# Това трябва да бъде зададено в /etc/apache2/envvars#PidFile ${APACHE_PID_FILE}## Изчакване: Броят секунди преди времето за изчакване на получаване и изпращане.#Изчакване 300## KeepAlive: Дали или да не позволява постоянни връзки (повече от # една заявка за връзка). Задайте на "Off", за да деактивирате.#KeepAlive On## MaxKeepAliveRequests: Максималният брой заявки, които да разрешите# по време на постоянна връзка. Задайте на 0, за да позволите неограничено количество.# Препоръчваме ви да оставите това число високо за максимална производителност.#MaxKeepAliveRequests 100## KeepAliveTimeout: Брой секунди за изчакване на следващата заявка от# същия клиент на същата връзка.#KeepAliveTimeout 5# Те трябва да бъдат зададени в /etc/apache2/envvarsUser ${APACHE_RUN_USER}Group ${APACHE_RUN_GROUP}## HostnameLookups: Регистрирайте имената на клиентите или само техните IP адреси# напр. www.apache.org (on) или 204.62 .129.132 (изключено).# По подразбиране е изключено, защото би било като цяло по-добре за мрежата, ако хората# трябва съзнателно да включат тази функция, тъй като активирането й означава, че# всяка клиентска заявка ще доведе до ПОНЕ една заявка за търсене до #nameserver.#HostnameLookups Off# ErrorLog: Местоположението на регистрационния файл за грешки.# Ако не посочите директива ErrorLog в рамките на # контейнер, съобщенията за грешка, свързани с този виртуален хост, ще бъдат# регистрирани тук.Ако *направите* дефинирайте лог файл за грешки за # контейнер, грешките на този хост ще се записват там, а не тук.#ErrorLog ${APACHE_LOG_DIR}/error.log## LogLevel: Контролирайте сериозността на съобщенията, регистрирани в error_log.# Налични стойности: trace8, ..., trace1, debug, info, notice, warn,# error, crit, alert, emerg.# Също така е възможно да се конфигурира нивото на регистрационния файл за определени модули, напр.# "LogLevel info ssl:warn"#LogLevel warn# Включете конфигурацията на модула:IncludeOptional mods-enabled/*.loadIncludeOptional mods-enabled/*.conf# Включете списък с портове за слушане Include ports.conf# Задава модела за защита по подразбиране на Apache2 HTTPD сървъра. Той# не позволява достъп до основната файлова система извън /usr/share и /var/www.# Първият се използва от уеб приложения, пакетирани в Debian,# последното може да се използва за локални директории, обслужвани от уеб сървъра. Ако# вашата система обслужва съдържание от поддиректория в /srv, трябва да разрешите# достъп тук или във всеки свързан виртуален хост. Options FollowSymLinksAllowOverride NoneRequire all deniedAllowOverride NoneRequire all grantedOptions Indexes FollowSymLinksAllowOverride All# Require local# Require ip 192.168.1Require all granted## Options Indexes FollowSymLinks# AllowOverride None# Require all granted## AccessFileName: Името на файла, който да търсите във всяка директория# за допълнителни директиви за конфигурация. Вижте също директивата AllowOverride#.#AccessFileName .htaccess## Следните редове предотвратява преглеждането на .htaccess и .htpasswd файловете# от уеб клиенти.#Require all denied## Следните директиви дефинират някои псевдоними на формат за използване с# директива CustomLog.## Те се отклоняват от дефинициите на Common Log Format, тъй като използват %O# (действителните изпратени байтове, включително заглавки) вместо %b (размера на# искания файл), тъй като последният прави невъзможно откриването на частични# заявки.## Имайте предвид, че използването на %{X-Forwarded- For}i вместо %h не се препоръчва.# Използвайте 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\"" combinationLogFormat "%h %l %u %t \"%r\" %>s %O" commonLogFormat "%{Referer}i -> %U" refererLogFormat "%{User-agent}i" агент# Включването на директории игнорира архивните файлове на редакторите и dpkg,# вижте README.Debian за подробности.# Включете общи фрагменти от изразиIncludeOptional conf-enabled/*.conf# Включете конфигурации на виртуален хост: IncludeOptional sites-enabled/*.

Имам нужда от AllowOverride All под /var/www, защото се опитвам да стартирам екземпляр на Wordpress и той трябва да може да пише на сървъра на Apache.

Apache2 определено работи, тъй като мога да получа достъп до уеб съдържанието чрез „localhost“ от браузър на локалната машина. Освен това systemctl status apache2 показва, че работи:

~$ systemctl status apache2● apache2.service - LSB: Apache2 уеб сървър Зареден: зареден (/etc/init.d/apache2; лошо; предварително зададено от доставчика: активирано) Влизане: /lib/systemd/system/apache2.service. d └─apache2-systemd.conf Активен: активен (работи) от четвъртък, 2019-10-10 20:01:44 EDT; Преди 5 минути Документи: man:systemd-sysv-generator(8)Процес: 1562 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS) CGroup: /system.slice/apache2.service ├ ─1621 /usr/sbin/apache2 -k старт ├─1624 /usr/sbin/apache2 -k старт ├─1625 /usr/sbin/apache2 -k старт ├─1626 /usr/sbin/apache2 -k старт ├─1627 /usr/sbin/apache2 -k старт ├─1628 /usr/sbin/apache2 -k старт └─2102 /usr/sbin/apache2 -k старт 10 октомври 20:01:42 lee-Desktop systemd[1]: Стартиране на LSB: Apache2 уеб сървър...10 октомври 20:01:42 lee-Desktop apache2[1562]:* Стартиране на Apache httpd уеб сървър apache210 октомври 20:01:43 lee-Desktop apache2[1562]: AH00558: apache2: Не може да се определи надеждно напълно квалифицираното име на домейн на сървъра, използвайки 127.0.1.1. Задайте директивата 'ServerName' глобално, за да потиснете това съобщение 10 октомври 20:01:44 lee-Desktop apache2[1562]:*10 октомври 20:01:44 lee-Desktop systemd[1]: Стартиран LSB: Apache2 уеб сървър.

Както беше предложено в коментарите, опитах netstat --inet -a | grep apache2, но не върна нищо. Очевидно това е необичайно, ако apache2 работи, тъй като трябва да слуша на порт 80. Пуснах netstat -plunt | grep:80 и получи следния резултат:

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

Това означава ли, че Apache слуша, но не чува нищо?

По отношение на конфигурациите на виртуалния хост, които също бяха поискани, единственият файл в /etc/apache2/sites-enabled/ е 000-default.conf, чието съдържание е:

# Директивата ServerName задава схемата на заявката, името на хоста и порта, # които сървърът използва, за да се идентифицира. Това се използва при създаване на URL адреси за пренасочване. В контекста на виртуалните хостове ServerName# указва какво име на хост трябва да се появи в Host: заглавката на заявката, за да# съответства на този виртуален хост. За виртуалния хост по подразбиране (този файл) тази# стойност не е решаваща, тъй като независимо от това се използва като хост за последна инстанция.# Въпреки това, трябва да я зададете изрично за всеки следващ виртуален хост.#ServerName www.example.comServerAdmin webmaster@localhostDocumentRoot /var/www/html# Налични нива на журнал: trace8, ..., trace1, debug, info, notice, warn,# error, crit, alert, emerg.# Също така е възможно да конфигурирате нивото на loglev за конкретни# модули, напр. #LogLevel info ssl:warnErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combination# За повечето конфигурационни файлове от conf-available/, които са# активирани или деактивирани на глобално ниво, е възможно да# включва ред само за един конкретен виртуален хост. Например # следният ред активира CGI конфигурацията само за този хост# след като е бил глобално деактивиран с "a2disconf".#Include conf-available/serve-cgi-bin.conf# vim: syntax=apache ts=4 sw= 4 sts=4 sr noet

Опитах също така да стартирам tail -f /var/log/apache2/*.log, но нищо не се отпечатва в регистрационните файлове, когато се опитвам да се свържа от отдалечена машина.

И така, как мога да отстраня това, което блокира връзката? Има ли някъде дневник, който може да ме просветли защо връзката се отказва и по каква причина?

Опитах предложенията, направени от Джейкъб в неговия отговор, но за съжаление това не разреши проблема. Всички други предложения или насоки ще бъдат високо оценени!


PREV: Често задавани въпроси за медиен сървър Plex (Често задавани въпроси)

NEXT: Как да коригирате често срещани проблеми с Plex Media Server | Windows Central

Popular Articles

Hot Articles
Back to Top