Alterando a porta 80 para 8080 no Apache

1

Estou tentando alterar a porta usada por um site de 80 para 8080.

Aqui está meu /etc/apache2/ports.conf :

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

Aqui está o meu arquivo VirtualHost:

<VirtualHost *:8080>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin [email protected]
  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 output:

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

Quando eu reinicio o apache usando a porta 8080 no meu VirtualHost, o site fica inativo (não consigo me conectar ao erro do site no chrome), se eu voltar para a porta 80 , tudo funciona corretamente novamente.

O que estou fazendo de errado aqui?

ATUALIZAÇÃO:

O host é uma máquina linode com o Debian 7.

Além disso, não tenho o SElinux ativado.

O /etc/hosts config:

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

Acho que a porta 8080 está aberta corretamente, aqui está a saída de 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 output:

* 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
    
por rfc1484 05.06.2013 / 16:33

7 respostas

4

Talvez a Porta 8080 esteja bloqueada pelo iptables. Use iptables -L -n -v para ver se o iptables está ativado e bloqueando efetivamente os pacotes para a porta 8080.

    
por 10.06.2013 / 11:06
3

qual distro você está usando? Você pode ter o SElinux ativado, o que está negando suas solicitações.

Verifique se o SElinux está ativado

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

Se o modo atual estiver sendo aplicado, tente desativá-lo durante a solução de problemas:

#setenforce 0

Se estiver funcionando agora, você precisa criar uma política personalizada do SElinux via audit2allow .

    
por 05.06.2013 / 16:55
3

Da sua saída netstat, parece que a porta 8080 está escutando no ipv6. Você está usando o ipv6 para se conectar?

O httpd está escutando no ipv4?

Você pode executar netstat -lntp|grep 80 e nos mostrar toda a saída, em vez de apenas colar o bit que considera relevante.

    
por 10.06.2013 / 12:20
1

Sugiro seguir a solução alternativa

  • verifique a configuração do apache

    apachectl configtest

  • teste a página do próprio servidor e verifique a saída HTTP

    wget -O - "localhost"

  • verifique o error_log do apache em qual tipo de erro você está recebendo, provavelmente uma configuração em seu site não está permitindo a porta 8080

  • tente usar apenas a porta 8080 para ver o que acontece

    NomeVirtualHost *: 8080 Ouça 8080

  • crie apenas um VirtualHost ouvindo na porta 8080

por 10.06.2013 / 10:54
1

Ok, vejo que a porta está aberta. O que aconteceu com

curl -v http://localhost:8080

?

    
por 10.06.2013 / 11:20
1

Estou bastante certo de que seu problema é que o apache está escutando no ipv6 pelo menos para :: 1.

Você pode por favor me avisar se você quiser usar ipv4, ipv6 ou ambos?

Por favor, execute o seguinte e cole na saída:

ifconfig -a

Isso deve nos mostrar todos os endereços IP que estão sendo executados nas interfaces.

Supondo que você esteja usando http://<servername>.<foo.com> como o URL no chrome, por favor, também execute estes comandos e cole no comando e na saída:

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>

Eu estou supondo que você quer usar ipV4 não ipv6. Se esse for o caso, tente isto:

Altere seu / etc / hosts para ficar assim:

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

Mas substitua o 10.0.0.1 pelo seu endereço ipv4. Em seguida, reinicie o apache. E tente novamente com o seu navegador e com o curl.

Com o curl, tente localhost e <servername>.<foo.com> .

    
por 11.06.2013 / 15:33
0

De acordo com seu teste de curl para o localhost, o apache está ouvindo 8080 e respondendo, embora redirecionando você com um 301 para http: // localhost /, mas que parece vir do site padrão.

De acordo com o seu apache confing você está configurando um host virtual nomeado, com ServerName www.foo.com

Tente:

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

Terminando com dois retornos de linha. Se isso estiver retornando conteúdo, significa que a configuração do servidor está funcionando bem. Então, seu problema é entre você e seu servidor.

    
por 13.06.2013 / 18:10