La directiva Listen permite indicar los puertos a través de los cuales el servidor web va a permitir admitir solicitudes de páginas web. Opcionalmente, también se pueden indicar las direcciones IP correspondientes a los adaptadores de red del servidor a través de los que se admitirán las solicitudes.
La opción por defecto que trae el servidor web Apache es escuchar por el puerto 80 a través de cualquier dirección IP. Esto lo puedes comprobar en los archivos de configuración, donde aparece:
Listen 80
En Windows lo puedes encontrar dentro del archivo httpd.conf y en Ubuntu lo encontrarás en el archivo ports.conf que es incluido dentro de apache2.conf.
Si deseas indicar la dirección IP del adaptador de red del servidor a través de la que se van a permitir las peticiones, debes hacerlo delante del número del puerto, separándolos con el carácter ':'. Por ejemplo, para admitir las solicitudes que entren a través de la dirección IP 192.168.5.1, por el puerto 80:
Listen 192.168.5.1:80
Para añadir más puertos de escucha, debes añadir las líneas necesarias para ello, indicando siempre la directiva Listen. Por ejemplo, para admitir las peticiones que entren al servidor a través de los puertos 80 y 8080:
Listen 80
Listen 8080
Recuerda que desde el navegador web, las solicitudes que se hacen a un servidor siempre se hacen por defecto al puerto 80 del servidor web. Por ejemplo, si se introduce la dirección http://www.servidorweb.com o mediante una IP como http://192.168.5.1, la petición se hace a través del puerto 80. Si se quiere hacer una solicitud a través de otro puerto, se debe indicar el número de puerto a continuación del nombre de dominio o IP del servidor, separándolo con el carácter ':'. Por ejemplo, para solicitar una página web a través del puerto 8080, se podría hacer:
http://www.servidorweb.com:8080
http://192.168.5.1:8080
http://www.servidorweb.com:8080/carpeta/archivo.html
Por tanto la petición: http://www.servidorweb.com:80 es la misma que http://www.servidorweb.com.
Si no se indica en la configuración del servidor web un servidor virtual para un determinado puerto, todas las peticiones por los puertos autorizados accederían a la misma dirección web. Por tanto, las peticiones http://www.servidorweb.com:8080 y http://www.servidorweb.com:80 accederían por defecto a la misma página web.
Lo habitual es que las peticiones recibidas por puertos diferentes accedan a páginas web distintas. Para realizar eso, debes declarar en el servidor web servidores virtuales en los que especifiques el puerto asociado, aunque no es necesario indicar la directiva NameVirtualHost si no se le va a asignar un nombre de dominio diferente. Por ejemplo, para que las peticiones recibidas a través del puerto 8080 muestren la web almacenada en la carpeta "C:\Users\Usuario\Documents\Mis webs":
<VirtualHost *:8080>
DocumentRoot "C:\Users\Usuario\Documents\Mis webs"
<Directory "C:\Users\Usuario\Documents\Mis webs">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Recuerda que si dispones de un cortafuegos en el servidor, debes configurarlo adecuadamente para que no corte las comunicaciones a través de los puertos que deseas habilitar para acceder al servidor web.