elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  configuración correcta de apache virtual hosts (name based)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: configuración correcta de apache virtual hosts (name based)  (Leído 4,157 veces)
gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
configuración correcta de apache virtual hosts (name based)
« en: 14 Agosto 2016, 06:40 am »

Estoy tratando de configurar manualmente los vhosts para varias páginas, aunque de momento estoy trabajando con un solo dominio, la idea es ir poniendo más. De momento estoy intentando configurar un solo dominio y varios subdominios.

La configuración vhosts la he repartido en varios archivos especificos para cada dominio/subdominio, así puedo activarlos o desactivarlos facilmente (tal y como recomiendan en la guia de arch linux):

httpd.conf
Código
  1. # Virtual hosts
  2. Include conf/extra/httpd-vhosts.conf
  3. # Available Vhosts
  4. Include conf/vhosts/example.dom
  5. Include conf/vhosts/sub1.example.dom
  6. Include conf/vhosts/sub2.example.dom

El archivo de configuración principal lo dejo para el bloque vhosts por defecto, el que se use cuando se accede al servidor mediante la ip pública o los nameservers (ns1.example.com), etc... Aquí estoy teniendo problemas y necesito saber como configurar correctamente el bloque vhosts default.

Código
  1. <VirtualHost xxx.xxx.xxx.xxx:*>
  2.    DocumentRoot "/srv/http/default"
  3.    ServerName localhost
  4. </VirtualHost>

o

Código
  1. <VirtualHost *>
  2.    DocumentRoot "/srv/http/default"
  3.    ServerName localhost
  4. </VirtualHost>

Si uso el primero se muestra siempre (da igual que pongas dominio/subdominio) el main document root de apche, que en arch linux es /srv/http y claro... puedes navegar por todas las carpetas que tengas (incluso desactivando -Indexes puedes usar la barra de navegación para averiguar nombres...).

Si uso el segundo se muestra siempre la carpeta default.

He probado quitando el bloque virtualhost default (comentando el archivo en httpd.conf) y lo mismo, se ignoran los bloques virtualhost de cada archivo, y siempre se muestra el main document root.

Código
  1. # conf/vhosts/domain.dom
  2. <VirtualHost domain:80>
  3.    ### Igual que abajo pero sin la configuración SSL
  4. </VirtualHost>
  5.  
  6. <VirtualHost domain.com:443>
  7.    ServerAdmin webmaster@domain.com
  8.    DocumentRoot "/srv/http/domain.com/www"
  9.    ServerName domain.com:443
  10.    ServerAlias www.domain.com:443
  11.    Protocols h2 h2c
  12.  
  13.    <Directory "/srv/http/domain.com/www">
  14.        Require all granted
  15.  
  16.        <IfModule mod_rewrite.c>
  17.            RewriteEngine On
  18.            RewriteBase /
  19.            RewriteCond %{REQUEST_FILENAME} !-d
  20.            RewriteCond %{REQUEST_FILENAME} !-f
  21.            RewriteRule ^index\.php$ - [L]
  22.            RewriteRule . index.php [L]
  23.        </IfModule>
  24.    </Directory>
  25.  
  26.    <IfModule dir_module>
  27.        DirectoryIndex index.php
  28.    </IfModule>
  29.  
  30.    #SSLEngine on
  31.    #SSLCertificateFile "/etc/httpd/conf/apache.crt"
  32.    #SSLCertificateKeyFile "/etc/httpd/conf/apache.key"
  33.    ErrorLog "/var/log/httpd/domain.com-error_log"
  34.    CustomLog "/var/log/httpd/domain.com-access_log" common
  35. </VirtualHost>

Esta configuración funciona en mi ordenador personal, usando el sistema operativo Manjaro (que es Arch Linux) y recuerdo que funcionaba bien. Ahora estoy configurando un servidor ARM de scaleway y estoy usando arch linux.

¿Como puedo configurar correctamente los virtual hosts para que haya un bloque que muestre una página por defecto cuando ningún nombre de dominio/subdominio coincida con los que tengo?

Gracias.


En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: configuración correcta de apache virtual hosts (name based)
« Respuesta #1 en: 18 Agosto 2016, 12:24 pm »

Lo dejo por si a alguien le surge el mismo problema. Al final he conseguido hacer que funcione, pero sigo sin entender por qué no funciona usando los nombres de dominio en los bloques:

Usando asterisco y el puerto (por si usas SSL):

Código:
#1st block
<VirtualHost *:80>
     ServerName  localhost
</VirtualHost>

#2nd block
<VirtualHost *:80>
     ServerName  mydomain.com
</VirtualHost>

#3rd block
<VirtualHost *:443>
    ServerName  mydomain.com
</VirtualHost>

#4th block
<VirtualHost *:443>
    ServerName  sub1.mydomain.com
</VirtualHost>

#5th block
<VirtualHost *:443>
    ServerName  sub2.mydomain.com
</VirtualHost>

http://mydomain.com/ y https://mydomain.com/ ambos irán al tercer y cuarto bloque, respectivamente. Pero http://www.mydomain.com/ y https://www.mydomain.com/ ambos irán al primer bloque ya que no se declaró ServerAlias a www.mydomain.com en ambos bloques. Los subdominios solo funcionarán por https, si intentas acceder por el puerto 80 llevará al primer bloque. Espero que se entienda el ejemplo que puse.


En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: configuración correcta de apache virtual hosts (name based)
« Respuesta #2 en: 22 Agosto 2016, 02:35 am »

Para eso existe el ServerAlias:

Intenta escribir cualquier código mal escrito para que te arroje un error, despues reinicia el servidor apache y si no te da error es porque no está incluyendo el host virtual.

De todas maneras te recomiendo crear una carpeta llamada sites-available y otra llamada sites-enabled, entonces tus archivos de host virtuales los pones en sites-available y en sites-enabled creas el enlace simbolico de los host virtuales que quieres habilitar y en el httpd.conf o apache2.conf le indicas un include global: IncludeOptional sites-enabled/*.conf

Por otro lado, si esto esta bien incluido puedes tener mas de un problema, por ejemplo que no tengas establecido los archivos indices por defecto, que el -indexes no este fuera de los host virtuales, que no este habilitado php (si es que estas intentando cargar un indice php) o que no este funcionando correctamente el modulo cgi (si estas intentando cargar un indice pl, sh, bin, o lo que sea)

Saludos.
En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: configuración correcta de apache virtual hosts (name based)
« Respuesta #3 en: 22 Agosto 2016, 14:59 pm »

Lo del orden de los bloques ya lo entiendo, se trata de poner primero el bloque *:80 y *:443 con servername localhost (y un document root con un index.html "it works" o lo que sea) y luego los demás bloques. De esta manera cualquier nombre que no coincida irá a los dos primeros.

Si, exacto, es lo que tenia en mente, usar el sistema que tiene debian (y derivados) para administrar los vhosts.

Los indices los tengo en cada bloque directory dentro de cada bloque virtualhost, de esta manera cada dominio/subdominio tiene su propio indice (por ejemplo el subdominio static no necesita php, pero los demás si).

El -Indexes está en el archivo de configuración principal (httpd.conf) en su bloque directory /srv/http (osea desactivado el indexamiento de apache de manera global y no tener que desactivarlo para cada dominio/sbudominio).

PHP lo tengo por mod_proxy_fcgi y php-fpm, aunque la configuración cgi no la he tocado (la verdad es que todavia no tengo ni idea de para que sirve :P), todo está funciona perfectamente.

Al final resulta que el server alias no lo voy a necesitar, ya que el dominio sin www lo voy a dejar que redireccione automaticamente a www y puerto 443 (gracias a let's encrypt por darnos certificados gratis  ;D). Y de paso también activo HTST (y me falta una opción de seguridad más que no recuerdo):

Código:
<VirtualHost *:80>
   ServerName example.com
   Redirect permanent / https://www.example.com/
</VirtualHost>

<VirtualHost *:443>
   ServerName example.com
   Redirect permanent / https://www.example.com/
   SSLEngine On
   # etc...
   Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

<VirtualHost *:443>
   ServerName www.example.com
   DocumentRoot /usr/local/apache2/htdocs
   SSLEngine On
   # etc...
   Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: configuración correcta de apache virtual hosts (name based)
« Respuesta #4 en: 22 Agosto 2016, 18:40 pm »

A la redirección podrias agregar %{REQUEST_URI} y una cabecera 301 para que mantengan la misma url solicitada en caso de que cambies tu dominio y asi no te afecta tanto el pagerank.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
obtener direccion virtual correcta
ASM
beguiner 2 3,555 Último mensaje 20 Enero 2011, 12:53 pm
por beguiner
Configuración correcta? « 1 2 »
Hardware
pepfapeste 19 11,847 Último mensaje 21 Julio 2011, 10:59 am
por pepfapeste
la configuración en paralelo no es correcta
Windows
giuseppeartadi 1 9,413 Último mensaje 17 Septiembre 2017, 10:08 am
por Machacador
Que configuración correcta aplicar en Modem yRouter
Redes
el21fijo 0 1,704 Último mensaje 8 Marzo 2020, 15:02 pm
por el21fijo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines