Я использую Apache 2.2.17 в Fedora v14. Я не могу получить доступ к работающему веб-серверу из браузера, и у меня также возникают трудности с его настройкой для прослушивания порта 443.
Сервер httpd
это работает:
[me@host ~]$ sudo ps -U root -u root u | grep httpd
root 6592 0.0 3.4 404620 17552 ? Ss 10:50 0:00 /usr/sbin/httpd -k graceful
Затем я останавливаю службу:
[me@host ~]$ sudo apachectl stop
Затем я настроил Listen
директива в /etc/httpd/conf/httpd.conf
для прослушивания портов 80 и 443:
Listen 1.2.3.4:80
Listen 1.2.3.4:443 https
(IP не 1.2.3.4
но фактический IP этого хоста.)
Я проверил другие директивы Apache conf, чтобы убедиться, что у меня есть папка с документами, что она доступна всем пользователям, и что она покажет список каталогов папки, если я не укажу index.html
и т.п.
При попытке запустить httpd
, Я получаю ошибку конфигурации:
[me@host conf]$ sudo apachectl graceful
(98)Address already in use: make_sock: could not bind to address [::]:443
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down
Unable to open logs
Похоже, что никакие другие службы не работают на TCP-порту 443 (или порту 80):
[me@host conf]$ sudo netstat -tulpn | grep 443
[me@host conf]$ sudo netstat -tulpn | grep 80
Если я закомментирую 443 Listen
директива и graceful
-перезапустить httpd
сервис, он запускается и отображается в списке процессов (через ps
, как указано выше), но я все еще не могу получить доступ к хосту через веб-браузер.
Что я упустил из виду при настройке Apache? Спасибо за ваш совет.
Проверьте правила iptables:
iptables -nv -L
Чтобы добавить новые правила, отредактируйте / etc / sysconfig / iptables:
...
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
...
Чтобы перезапустить iptables:
#service iptables restart
Чтобы остановить iptables:
#service iptables stop
Для отладки используйте tcpdump:
# tcpdump -pn host YOU_IP and not port 22
or
# tcpdump -pn port 443 and icmp
Я только что прокомментировал строку
Listen *:80
и теперь он работает.
Перед этим запустите команду hostname
и добавьте это имя в свой /etc/hosts
. В httpd.conf
У меня то же имя на линии ServerName
.
Раньше я контролировал, что ни одна служба не использовала этот порт: в моем случае 80.