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


45

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

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

Come faccio ad ascoltare 80 e 8080?


Perché pensi che non sia in ascolto sulla porta 8080? Potrebbe anche essere utile pubblicare frammenti della tua configurazione.
David Z,

1
Hai riavviato Apache dopo aver modificato http.conf?
Dana the Sane,

@David Ho aggiornato la mia domanda per mostrare perché penso che non stia ascoltando su 8080. Non ho accesso a httpd.conf in questo momento. @Dana - si.
Owen,

Risposte:


63

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 no
    # 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

È necessario assicurarsi 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 l'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 a eseguire apache sotto strace per vedere se sta tentando di collegarsi a quella porta e fallendo, ma non registrando il problema.


1
In Apache 2.4 dove è possibile trovare questo frammento di configurazione? Grazie.
Luís de Sousa,

2
Rispondendo alla mia domanda: /etc/apache2/ports.conf.
Luís de Sousa,

7

Queste risposte sono fantastiche, ma tralasciano la possibilità che Owen 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 *:*>.


Sospetto che questo sia il mio problema. Penso che abbia una direttiva <VirtualHost *: 80>. Dovrò controllare questo.
Owen,

1
Se non si dispone di un host virtuale, verrà offerto il contenuto dal DocumentRoot globale, che probabilmente fornirà un indice.html standard, una pagina dell'indice di directory, un errore 404 o 403. Non sarebbe scaduto.
David Pashley,

2
Sembra che tu abbia un firewall in atto che fa cadere silenziosamente i pacchetti.
msanford,

A quanto pare, si è verificato un problema con il firewall.
Owen,

5

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       

0

Potresti anche voler verificare se 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


Oppure puoi lasciare SELinux acceso, se sei su un moderno sistema SELinux vedi come le porte sono etichettate con una porta semanage -l. vedere danwalsh.livejournal.com/9275.html che si intitola "Voglio che il mio demone apache ascolti su una porta diversa ma SELinux lo impedisce, cosa devo fare?"
rev

0

Potrebbe essere necessario configurare un sito una porta 8080 affinché funzioni. Leggi la documentazione per gli host virtuali di Apache . 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 -nlpe cercando una voce su quella porta.


1
No, questo non è giusto. Se vuoi che apache ascolti su una porta, devi usare la direttiva Listen.
David Pashley,


1
Bene, potrebbe essere in qualche modo giusto: molte persone creano vhost come <VirtualHost *: 80>, e in tal caso dovresti cambiarlo in <VirtualHost *: *> o creare un altro vhost per la porta 8080. (Naturalmente, il È richiesta anche la direttiva Listen)
David Z,

@David Pashley, L'autore ha affermato che la direttiva Listen era già stata aggiunta.
Dana the Sane,

0

Supponendo che Linux funzioni netstat -lntpcome root, come puoi vedere se apache è in ascolto su 8080 o meno. Questo ti aiuterà a identificare se il problema è che l'apache non è in ascolto o se ci sono fattori esterni (ad esempio firewall, selinux ecc.) Ad Apache che rendono il timeout della connessione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.