Como faço para o Apache Web Server escutar em duas portas diferentes?

41

Eu gostaria de ter um servidor Apache Web instalado em casa para ouvir na porta 80 e na porta 8080.

Adicionei Listen 8080 ao httpd.conf e reiniciei os serviços do Apache, mas o servidor parece não estar escutando em 8080. Adicionando link expira e não exibe meu index.html, mas o link exibirá meu index.html.

Como faço para ouvir 80 e 8080?

    
por Owen 18.06.2009 / 16:32

6 respostas

58

Uma instalação Debian padrão do apache terá o seguinte fragmento de configuração:

Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

Isso está dizendo ao apache para escutar na porta 80 e para escutar a porta 443 se o mod_ssl estiver configurado. No seu caso, você quer:

Listen 80
Listen 8080

Você precisa executar uma reinicialização, não uma operação de recarga no apache, para que ele preste atenção às novas diretivas de escuta. A coisa mais segura a fazer é parar o apache, certificar-se de que ele está morto e iniciá-lo novamente.

Se essa configuração não funcionar, verifique os arquivos de log em busca de mensagens de erro. Você poderia usar "netstat -lep --tcp" para ver se há algo escutando na porta 8080. Finalmente, se todo o resto não funcionar, tente executar o apache sob strace para ver se ele está tentando ligar a essa porta e falhar, mas não registrando o problema.

    
por 18.06.2009 / 17:11
7

Essas respostas são ótimas, mas elas deixam de fora a possibilidade de Owen ter feito isso ("Eu adicionei Listen 8080 ") pode significar exatamente o que parece (ou seja, o que David sugeriu).

Se você já fez isso e ainda acha que não está funcionando, certifique-se de ter configurado corretamente suas diretivas para cada subdomínio que você pode ter, incluindo o padrão (se tiver sido configurado manualmente para escutar: 80 logo após o nome).

Você provavelmente tem uma diretiva como esta:

<VirtualHost *:80>
 ServerName michaelsanford.com
 etc…
</VirtualHost>

Você precisa alterar isso para <VirtualHost *:8080> ou <VirtualHost *:*> .

    
por 18.06.2009 / 17:19
5

Etapa 1

#vi httpd.conf
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

link

Listen 80
Listen 8080

Etapa 2

#su - service httpd restart

Etapa 3

$ netstat -lntp

(Nem todos os processos podem ser identificados, informações de processo não pertencentes a propriedade  não será mostrado, você teria que ser root para ver tudo.)

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:47027               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:80              0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:8080            0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      -                   
tcp        0      0 ::ffff:127.0.0.1:45100      :::*                        LISTEN      3149/java           
tcp        0      0 :::111                      :::*                        LISTEN      -                   
tcp        0      0 :::80                       :::*                        LISTEN      -                   
tcp        0      0 :::57173                    :::*                        LISTEN      3149/java           
tcp        0      0 :::18197                    :::*                        LISTEN      3149/java           
tcp        0      0 :::22                       :::*                        LISTEN      -                   
tcp        0      0 ::1:631                     :::*                        LISTEN      -                   
tcp        0      0 :::40832                    :::*                        LISTEN      3149/java           
tcp        0      0 ::ffff:127.0.0.1:6880       :::*                        LISTEN      3149/java       
    
por 18.06.2009 / 18:38
0

Você também pode querer verificar se você tem o SELinux ativado. A configuração padrão do SELinux pode não permitir que você execute o Apache em portas não padrão. Aqui está um site que mostra se você está executando o SELinux e como desativá-lo, se você não quiser ou usar seus recursos. link

    
por 18.06.2009 / 17:24
0

Você pode precisar configurar um site com uma porta 8080 para que isso funcione. Leia a documentação dos Apache Virtual Hosts . Cada 'site' pode ser configurado para aceitar conexões em portas específicas (e ip's, etc). Você tem um host virtual no seu http.conf que é configurado apenas para a porta 80?

Além disso, você pode confirmar que o servidor está escutando em 8080 usando netstat -nlp e procurando por uma entrada nessa porta.

    
por 18.06.2009 / 16:38
0

Assumindo que o linux execute netstat -lntp como root, como você pode ver se o apache está escutando 8080 ou não. Isso ajudará você a identificar se o problema é que o apache não esteja ouvindo ou se houver fatores externos (por exemplo, firewall, selinux, etc.) no apache, fazendo com que o tempo limite da conexão seja excedido.

    
por 18.06.2009 / 18:24