Меняем порт 80 на 8080 в Apache

Я пытаюсь изменить порт, используемый веб-сайтом, с 80 на 8080.

Вот мой /etc/apache2/ports.conf:

NameVirtualHost *:80
NameVirtualHost *:8080
Listen 80
Listen 8080

Вот мой файл VirtualHost:

<VirtualHost *:8080>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin webmaster@foo.com
  ServerName  www.foo.com
  ServerAlias foo.com

  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html index.php
  DocumentRoot /var/www/foo.com/
</VirtualHost>

netstat -lntp выход:

tcp6       0      0 :::8080       :::*              LISTEN      7267/apache2    
tcp6       0      0 :::80         :::*              LISTEN      7267/apache2

Когда я перезагружаю Apache, используя порт 8080 в моем VirtualHost веб-сайт отключается (не удается подключиться к ошибке веб-сайта в Chrome), если я вернусь к порту 80, все снова работает правильно.

Что я здесь не так делаю?

ОБНОВИТЬ:

Хост - это линодный компьютер с Debian 7.

Также у меня не включен SElinux.

/etc/hosts конфигурации:

127.0.0.1   <foo.com> <serverhostname>
127.0.1.1   debian

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Я думаю, что порт 8080 он правильно открыт, вот вывод iptables -L -n -v:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  467 36136 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 REJECT     all  --  *      *       0.0.0.0/0            127.0.0.0/8          reject-with icmp-port-unreachable
 103K   11M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
  600 35296 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
   30  1532 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
   42  2308 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8080
 6860  411K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
   44  2848 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
  860 57824 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 5/min burst 5 LOG flags 0 level 7 prefix "iptables denied: "
  968 67687 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

curl -v http://localhost:8080 выход:

* About to connect() to localhost port 8080 (#0)
*   Trying ::1...
* connected
* Connected to localhost (::1) port 8080 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.26.0
> Host: localhost:8080
> Accept: */*
> 
* additional stuff not fine transfer.c:1037: 0 0
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 301 Moved Permanently
< Date: Mon, 10 Jun 2013 09:58:08 GMT
< Server: Apache/2.2.22 (Debian)
< X-Powered-By: PHP/5.4.4-14
< X-Pingback: http://www.foo.com/xmlrpc.php
< Location: http://localhost/
< Vary: Accept-Encoding
< Content-Length: 0
< Content-Type: text/html; charset=UTF-8
< 
* Connection #0 to host localhost left intact
* Closing connection #0

7 ответов

Возможно, порт 8080 заблокирован iptables. использование iptables -L -n -v чтобы увидеть, включен ли iptables и эффективно ли блокирует пакеты на порт 8080.

Из вашего вывода netstat похоже, что порт 8080 прослушивает ipv6. Вы используете ipv6 для подключения?

Httpd прослушивает ipv4?

Ты можешь бежать netstat -lntp|grep 80 и покажите нам все результаты, вместо того, чтобы просто вставить фрагмент, который вы считаете уместным.

В каком дистрибутиве вы работаете? Возможно, у вас включен SElinux, который отклоняет ваши запросы.

Проверьте, включен ли SElinux

# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

Если текущий режим является принудительным, попробуйте отключить его во время устранения неполадок:

#setenforce 0

Если это работает сейчас, вы должны создать собственную политику SElinux через audit2allow,

Хорошо, я вижу, что порт открыт. Что случилось с

curl -v http://localhost:8080

?

Я предлагаю следующий обходной путь,

  • проверьте настройку apache

    apachectl configtest

  • проверить страницу с самого сервера и проверить вывод HTTP

    wget -O - "localhost"

  • проверьте apache error_log, какую ошибку вы получаете, вероятно, конфигурация на вашем сайте не позволяет порт 8080

  • попробуйте использовать только порт 8080, чтобы увидеть, что происходит

    NameVirtualHost *:8080 Слушай 8080

  • создать только прослушивание VirtualHost на порт 8080

Я уверен, что ваша проблема в том, что apache прослушивает ipv6 по крайней мере для::1 .

Подскажите пожалуйста, хотите ли вы использовать ipv4, ipv6 или оба?

Пожалуйста, запустите следующее и вставьте в вывод:

ifconfig -a

Это должно показать нам все IP-адреса, которые работают на интерфейсах.

Предполагая, что вы используете http://<servername>.<foo.com> в качестве URL-адреса в chrome, пожалуйста, также выполните следующие команды: вставьте в команду и выведите:

dig <servername>.<foo.com>
dig <servername>
dig -t A <servername>.<foo.com>
dig -t A <servername>
dig -t AAAA <servername>.<foo.com>
dig -t AAAA <servername>

Я предполагаю, что вы хотите использовать ipV4, а не ipv6. Если это так, попробуйте это:

Измените ваш /etc/hosts, чтобы он выглядел так:

127.0.0.1  localhost
10.0.0.1 <servername>.<foo.com> <servername>

# The following lines are desirable for IPv6 capable hosts
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Но замените 10.0.0.1 на ваш адрес ipv4. Затем перезапустите Apache. И попробуйте снова с вашим браузером и с curl.

С завитком попробуй localhost а также <servername>.<foo.com>,

В соответствии с вашим тестом curl для localhost apache прослушивает 8080 и отвечает, хотя перенаправляет вас с 301 на http:// localhost/, но, похоже, это с сайта по умолчанию.

В соответствии с вашими настройками Apache вы настраиваете именованный виртуальный хост с ServerName www.foo.com

Пытаться:

$ telnet localhost 8080
GET / HTTP/1.0
Host: www.foo.com

Заканчивается двумя строчками возврата. Если это возвращает контент, это означает, что конфигурация сервера работает нормально. Так что ваша проблема между вами и вашим сервером.

Другие вопросы по тегам