Я установил сервер Apache на свой компьютер с Windows 7. Мне удалось отобразить index.php по умолчанию, набрав http: // localhost / в адресной строке моего браузера.
Однако я все еще не могу увидеть эту страницу, набрав IP-адрес своего компьютера (ни локально (с того же компьютера), ни глобально (с другого компьютера, подключенного к Интернету)).
Мне сказали, что мне нужно открыть 80 порт. Я сделал это (как описано Вот), но это не решило проблему.
Прежде всего, я хотел бы проверить, какие порты открыты, а какие нет. Например, я не уверен, что мой порт 80 был закрыт до того, как я попытался открыть. Я также не уверен, что он открылся после того, как я попытался его открыть.
Я попытался запустить очень простой веб-сервер, написанный на Python. Для этого я использовал порт 81, и он работал! И порт 81 открыть не пробовал. Значит, по умолчанию открылся. Итак, если 81 открыт по умолчанию, почему 80 нет? Или это так?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
1. В моем файле httpd.conf есть "Listen 80".
2. Этот сайт сообщает мне, что порт 80 на моем компьютере открыт.
3. Я получаю разные ответы, если пытаюсь http: // myip: 80 и http: // myip: 81. В последнем случае браузер (Chrome) пишет мне, что ссылка не работает. В первом случае я получаю: Запрещено. У вас нет разрешения на доступ к этому серверу.
4. IE пишет, что «Веб-сайт отказался показать эту веб-страницу».
Если вы просто проверяете свои порты снаружи. Используйте этот инструмент:
http://www.yougetsignal.com/tools/open-ports/
Он попытается подключиться к вашему IP-адресу через определенный порт и сообщит вам, открыт он или закрыт для внешнего мира.
Местные проблемы тоже? Похоже, вам мешает брандмауэр Windows 7. Добавьте исключение с помощью этого руководства ...
http://www.sevenforums.com/tutorials/542-windows-firewall-add-remove-exception.html
Бег netstat -a -n
или ss -a -n
из командной строки покажет все открытые сетевые подключения и порты прослушивания на вашем компьютере. 0.0.0.0:80
будет означать, что он прослушивает порт 80
всех IP-адресов (localhost и ваши общедоступные / частные IP-адреса), где как 127.0.0.1:80
будет означать, что он прослушивает только локальный хост. Можете добавить -b
к команде, и он покажет, какой исполняемый файл использует этот порт. Вы можете получить ту же информацию с помощью монитора ресурсов в Windows 7 в разделе «Порты прослушивания» на вкладке «Сеть».
Если вы хотите узнать, открыт ли он с другого сервера, вы можете просто telnet serverName 80
и посмотрите, открывается ли сеанс. Если нет, то либо сервер не слушает, либо порт заблокирован брандмауэром.
Если он открывается, а затем сразу закрывается, по крайней мере, Windows 2003, тогда программное обеспечение (например, Exchange) может не быть настроено для прослушивания этого конкретного интерфейса или IP, но оно прослушивает другие порты. Я видел, как IIS ведет себя так, потому что это глупо, а Apache - нет.
Вы написали:
В первом случае я получаю: Запрещено. У вас нет разрешения на доступ к этому серверу.
Хотя это может показаться странным, на самом деле вы не есть проблема с открытыми портами (но с конфигурацией Apache).
Это сообщение «Запрещено» приходит с вашего сервера Apache; это означает, что ваш веб-сервер является доступны из Интернета.
Вам необходимо настроить Apache, чтобы разрешить обслуживание всем хостам - иначе они получат страницу «Запрещено». IIRC, Apache изначально настроен так, чтобы разрешать запросы только с локального компьютера.
Где-то в вашей конфигурации Apache, вероятно, есть такой раздел (фактический каталог может быть другим):
<Directory "/home/piskvor/www">
Allow from 127.0.0.1
Deny from all
(...)
Если вы хотите, чтобы любой компьютер мог видеть ваши страницы, вам необходимо изменить Deny from all
к Allow from all
. Дополнительную информацию см. В документации модуля доступа..
Чтобы увидеть открытые порты, вам, вероятно, следует использовать nmap. У них есть версия для Windows: http://nmap.org/dist/nmap-5.21-setup.exe
Недостаточно, если вы видите, что ваш порт 80 открыт с локального хоста - может быть, что-то мешает, если вы попробуете его из другого места, поэтому я рекомендую nmap
На клиенте вы вводите: nmap ip-of-your-server
Если вы хотите протестировать это в своей локальной сети, скачайте Nmap Если вы хотите узнать, насколько порт доступен для внешнего мира, запустите сканирование в https://www.grc.com/x/ne.dll?bh0bkyd2
Порты сервера могут быть привязаны к одному IP-адресу или ко всем доступным IP-адресам. Похоже, ваша установка Apache настроена для привязки только к 127.0.0.1, и вам нужно настроить ее для привязки к *. В вашем httpd.conf (в каталоге Apache conf) найдите строку вроде Listen localhost:80
и измените его на Listen 80
.
telnet <host> <port>
твой друг. Он установлен практически на каждом компьютере в мире.
Правки после перечитывания вопроса:
Вот несколько полезных советов по диагностике
если вы можете получить доступ к сайту через localhost, но не через локальный IP-адрес вашего сайта (192.168. *) с других хостов в вашей сети, вероятно, это проблема брандмауэра Windows.
если вы можете получить доступ к сайту с других локальных компьютеров, но не из Интернета на ваш общедоступный IP-адрес, это проблема конфигурации маршрутизатора / переадресации портов.
В командной строке введите:
netstat -ano, look for 0.0.0.0:80
... или ваш IP: 80. Это сообщит вам, открыт ли порт 80 на вашем компьютере. Теперь, если вы хотите проверить и посмотреть, можете ли вы получить к нему доступ из-за пределов своей сети, определите, есть ли у вас какой-то брандмауэр. Если вы это сделаете, вам нужно будет перенаправить порт 80 на ваш веб-сервер.
Если вы работаете в Windows, используйте SysInternals TCPView. Он может сказать вам, какая программа использует какой порт.
В команде DOS:
C:\Windows\system32>netstat -a -b
使用中連線
協定 本機位址 外部位址 狀態
TCP 0.0.0.0:80 801781-N1:0 LISTENING [Skype.exe]
TCP 0.0.0.0:135 801781-N1:0 LISTENING RpcSs [svchost.exe]
TCP 0.0.0.0:443 801781-N1:0 LISTENING [Skype.exe]
...