Вопрос или проблема
Я только что установил apache2 на своем компьютере вместе с php5.
Я могу перейти на “localhost”, и это работает. Но я не могу получить доступ к этому веб-серверу с другой машины… или даже локально, используя IP-адрес. Другие сообщения, такие как Apache (и другие службы) работают на localhost, но не на IP-адресе, предлагают проверить настройки брандмауэра, а также убедиться, что я прослушиваю не только на localhost, но и на *80.
Вот что у меня в ports.conf:
me@mydev:/etc/apache2$ cat ports.conf
# Если вы просто измените порт или добавите другие порты здесь, вам, вероятно, также придется
# изменить оператор VirtualHost в
# /etc/apache2/sites-enabled/000-default.conf
Listen 80
<IfModule ssl_module> Listen 443 </IfModule>
<IfModule mod_gnutls.c> Listen 443 </IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Похоже, что стандартный брандмауэр не включен:
me@mydev:/etc/apache2$ sudo ufw status
[sudo] пароль для me:
Status: inactive
me@mydev:/etc/apache2$
Просто не уверен, что еще проверить. Спасибо.
EDIT 1
Результаты запроса по IP таблицам:
me@mydev:/etc/apache2$ sudo iptables -L
[sudo] пароль для me:
Chain INPUT (policy ACCEPT) target prot opt source
destination
Chain FORWARD (policy ACCEPT) target prot opt source
destination
Chain OUTPUT (policy ACCEPT) target prot opt source
destination
me@mydev:/etc/apache2$
И я могу успешно пинговать локальный компьютер с разных машин.
EDIT 2
Вот результаты команды nmap:
me@mydev:/var/www/html/test$ nmap localhost
Starting Nmap 6.40 ( http://nmap.org ) at 2014-12-01 04:04 EST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00020s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds
me@mydev:/var/www/html/test$
А для IP:
me@mydev:/var/www/html/test$ nmap 10.238.59.63
Starting Nmap 6.40 ( http://nmap.org ) at 2014-12-01 04:08 EST
Nmap scan report for mydev.testdomain.bg.org (10.238.59.63)
Host is up (0.00024s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds
me@mydev:/var/www/html/test$
Это на самом деле не ответ, но это было слишком детально, чтобы быть комментарием, и может стать ответом после получения более информации.
Когда я прочитал ваш пост, я подумал, что вы используете свой LAN IP-адрес (внутренний IP-адрес), но после сравнения результатов ваших команд с моими, что заставило меня посмотреть более внимательно, я вижу, что вы пытаетесь использовать внешний публичный IP-адрес.
Эта ситуация приводит к большему количеству переменных и большему уровню сложности.
Вы используете фактический IP-адрес (xxx.xxx.xxx.xxx) или доменное имя?
“mydev.testdomain.bg.org” действительно является фактическим доменным именем? Я не вижу этого в реестре вообще – как вы получаете DNS?
Содержит ли ваш конфигурационный файл apache имя сервера, указанное в настройках VirtualHost в /etc/apache2/sites-enabled
?
На каком сервере это размещается? Я видел ситуации с определенными маршрутизаторами, когда вы не могли получить доступ к локальному сайту с локального компьютера, используя внешний публичный IP (например, маршрутизатор Comcast).
EDIT: Также, когда вы вносите изменения в свою конфигурацию, как это предлагали люди, которые могут или не могут иметь понятие о том, что они предлагают, и изменение не решает вашу проблему, вы возвращаетесь и отменяете изменение, чтобы восстановить оригинальную конфигурацию? Вы должны либо делать это, либо вести очень хорошие записи обо всех изменениях, которые вы сделали.
Если вы используете виртуальную машину, просто попробуйте перезагрузить ее!!
У меня была точно такая же проблема с теми же конфигурациями, что и у вас, в свежей установке Ubuntu. localhost работал, но ничего другое. Перезагрузка решила эту проблему для меня.
Ответ или решение
Проблема, которую вы описали, когда веб-сервер Apache на Ubuntu 14 работает с "localhost", но не доступен по IP-адресу, может быть вызвана несколькими факторами. Давайте разберем возможные причины и их решения.
1. Конфигурация Apache
Убедитесь, что конфигурация вашего Apache настроена правильно, чтобы слушать на всех интерфейсах (включая локальный IP). Ваша конфигурация файла ports.conf выглядит верно, так как вы используете:
Listen 80
Теперь необходимо проверить ваш файл виртуального хоста в /etc/apache2/sites-enabled/000-default.conf (или в другом конфигурационном файле). Убедитесь, что в нем указан правильный ServerName
, и он должен выглядеть примерно так:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
2. Проверка брандмауэра
Хотя вы упомянули, что ufw
не активен, рекомендуется убедиться, что другие настройки брандмауэра (например, iptables) не блокируют ваши подключения. Ваши результаты iptables указывают, что политика INPUT, FORWARD и OUTPUT установлены на ACCEPT, что верно. Но желательно выполнить следующую команду для подтверждения доступности:
sudo iptables -L -n -v
Следует убедиться, что не установлены дополнительные правила, которые могут блокировать трафик на порт 80.
3. Использование IP-адреса
Как вы отметили в редактировании, проверка доступа по локальному IP-адресу дала результаты, показывающие, что порт 80 открыт. Однако стоит проверить, можно ли подключиться к серверу с других машин внутри той же сети, используя его IP-адрес.
Приведенное вами описание говорит о том, что вы можете пинговать сервер, но стоит также выполнить тест на доступность HTTP с других машин:
curl http://10.238.59.63
Если вы получаете ответ, значит, веб-сервер работает нормально, и проблема может быть на стороне клиента.
4. Проверка сетевых настроек
4.1 Взаимодействие с маршрутизатором
Если вы пытаетесь получить доступ к серверу извне (например, из Интернета), убедитесь, что ваш маршрутизатор настроен на перенаправление трафика на порт 80 на локальный IP-адрес вашего сервера. Это называется Port Forwarding, и без этой настройки внешние запросы не будут достигать вашего сервера.
4.2 Использование локального и внешнего IP
Вы также можете столкнуться с проблемой доступа к серверу, когда вы пытаетесь использовать внешний IP для доступа к серверу локально. Некоторые маршрутизаторы могут блокировать этот доступ по соображениям безопасности. Попробуйте использовать локальный IP-адрес устройства для доступа.
5. Перезагрузка сервера
Если вы внесли изменения в конфигурацию Apache или сетевые настройки, обязательно выполните команду:
sudo systemctl restart apache2
Иногда простая перезагрузка системы или сервера может устранить проблемы с процессами, которые не перезапустились должным образом.
6. Общие рекомендации
- Убедитесь, что вы используете актуальную версию Apache и PHP. Возможно, стоит рассмотреть обновление системы до более новой версии Ubuntu и Apache, если это допускается.
- Ведение журнала ошибок может помочь выяснить, не возникает ли каких-либо проблем, которые могли бы указывать на наличие неполадок.
Если ни одно из вышеперечисленных решений не решает вашу проблему, пожалуйста, предоставьте более подробную информацию о вашей сетевой конфигурации, маршрутизаторе и настройках Apache.