sviluppo-web-qa.it

Come faccio ad ascoltare Apache Web Server su due porte diverse?

Vorrei un server Web Apache che ho installato a casa per ascoltare sulla porta 80 e sulla porta 8080.

Ho aggiunto Listen 8080 su httpd.conf e riavviato i servizi Apache ma il server non sembra essere in ascolto su 8080. Punch in http: // localhost: 808 timeout e non visualizza il mio indice. HTML ma http: // localhost visualizzerà il mio index.html.

Come faccio ad ascoltare 80 e 8080?

45
Owen

Un'installazione Debian standard di Apache avrà il seguente frammento di configurazione:

 Ascolta 80 
 
 <IfModule mod_ssl.c> 
 # Gli host virtuali basati sul nome SSL non sono ancora supportati, quindi nessuna 
 # NameVirtualHost istruzione qui 
 Ascolta 443 
 </IfModule> 

Questo sta dicendo ad Apache di ascoltare sulla porta 80 e di ascoltare la porta 443 se mod_ssl è configurato. Nel tuo caso vorresti:

Listen 80
Listen 8080

Devi assicurarti di eseguire un riavvio, non un'operazione di ricarica su Apache affinché presti attenzione alle nuove direttive di ascolto. La cosa più sicura da fare è fermare Apache, assicurarsi che sia morto e riavviarlo.

Se questa configurazione non funziona, controllare i file di registro per eventuali messaggi di errore. Puoi usare "netstat -lep --tcp" per vedere se c'è qualcosa in ascolto sulla porta 8080. Infine, se tutto il resto non funziona, prova ad eseguire Apache sotto strace per vedere se sta tentando di collegarsi a quella porta e fallendo, ma non registrando il problema.

64
David Pashley

Queste risposte sono ottime, ma tralasciano la possibilità che Owen abbia lo abbia già effettivamente fatto ("Ho aggiunto Listen 8080 ") può significare esattamente ciò che sembra (ovvero, ciò che David ha suggerito).

Se lo hai già fatto e continui a non funzionare, assicurati di aver configurato correttamente le direttive per ogni sottodominio che potresti avere, incluso quello predefinito (se è stato configurato manualmente per l'ascolto: 80 subito dopo il nome).

Probabilmente hai una direttiva come questa:

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

Devi cambiarlo in <VirtualHost *:8080> o <VirtualHost *:*>.

7
msanford

Passo 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>

httpd (Apache) per ascoltare sulla porta 80 e per ascoltare la porta 443 se mod_ssl è configurato.

Listen 80
Listen 8080

Passo 2

#su - service httpd restart

Passaggio 3

$ netstat -lntp

(Non tutti i processi potrebbero essere identificati, le informazioni sui processi non di proprietà non verranno mostrate, dovresti essere root per vederle tutte.)

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       
5
Rajat

Potrebbe essere necessario configurare un sito una porta 8080 affinché funzioni. Leggi la documentazione per Apache Virtual Hosts . Ogni "sito" può essere impostato per accettare connessioni su porte specifiche (e IP, ecc.). Hai un host virtuale nel tuo http.conf configurato solo per la porta 80?

Inoltre, puoi confermare che il server è in ascolto su 8080 usando netstat -nlp e cerca una voce su quella porta.

0
Dana the Sane

Puoi anche verificare se hai SELinux abilitato. La configurazione SELinux predefinita potrebbe non consentire l'esecuzione di Apache su porte non standard. Ecco un sito che ti mostra se stai eseguendo SELinux e come disabilitarlo, se non vuoi o usare le sue funzionalità. http://www.crypt.gen.nz/selinux/disable_selinux.html

0
Reamer77

Supponendo che Linux esegua netstat -lntp il root come puoi vedere se Apache è in ascolto su 8080 o meno. Questo ti aiuterà a identificare se Apache non sta ascoltando il problema o se ci sono fattori esterni (ad es. Firewall, selinux ecc.) Ad Apache che determinano il timeout della connessione.

0
Jason Tan