Apache répond à la request qu'il ne devrait pas

J'ai les 2 loggings de domaine suivants

website.com 10.0.0.1 www.website.com 10.0.0.1 

J'ai (eu) les 2 Hottes virtuelles suivantes

 #note how the IP address is wrong <VirtualHost 10.0.0.2:80> ServerName website.com Redirect / http://www.website.com </VirtualHost> <VirtualHost 10.0.0.1:80> ServerName www.website.com #note how there is no alias here DocumentRoot /var/www/www.website.com <IfModule mpm_itk_module> AssignUserId www-website www-website </IfModule> CustomLog /var/log/apache2/www.website.com-access.log combined ErrorLog /var/log/apache2/www.website.com-error.log </VirtualHost> <VirtualHost 10.0.0.1:443> ServerName www.website.com DocumentRoot /var/www/www.website.com <IfModule mpm_itk_module> AssignUserId www-website www-website </IfModule> SSLEngine On SSLCertificateFile /etc/apache2/ssl/www.website.com CustomLog /var/log/apache2/www.website.com-ssl-access.log combined ErrorLog /var/log/apache2/www.website.com-ssl-error.log </VirtualHost> 

Je m'attendais à ce qu'une request à http://website.com soit returnnée avec un 404. Cependant, il a été servi comme s'il avait été livré à http://www.website.com . Pourquoi?

One Solution collect form web for “Apache répond à la request qu'il ne devrait pas”

LazyOne a tout à fait raison. Tant que vous avez défini vos directives NameVirtualHost , le premier VirtualHost défini pour l' adresse IP demandée est utilisé, si aucun autre nombre ServerName ou ServerAlias n'existe.

Par conséquent, si vous souhaitez desservir un 404 pour chaque adresse IP qui ne correspond pas à une correspondance d'en-tête hôte, créez un VirtualHost (par IP) sans une directive ServerName ou ServerAlias et placez-le dans la configuration afin qu'il soit chargé en premier. Quelque chose comme:

 <VirtualHost 10.0.0.1:80> Redirect 404 / </VirtualHost> <VirtualHost 10.0.0.2:80> Redirect 404 / </VirtualHost> <VirtualHost 10.0.0.2:80> ServerName website.com Redirect / http://www.website.com </VirtualHost> <VirtualHost 10.0.0.1:80> ServerName www.website.com #note how there is no alias here DocumentRoot /var/www/www.website.com ... </VirtualHost> 

Mise à jour : La plupart des éléments suivants sont cribés des docs apache2, ici et ici .

Le file de configuration principal, généralement appelé httpd.conf, est chargé en premier. Mais si vous utilisez un package binary sur un système basé sur Debian, il y a de bonnes chances qu'il s'appelle apache2.conf. D'autres files de configuration sont ajoutés à l'aide de la directive Include dans la configuration principale. Les utilisations multiples de la directive Include sont autorisées. Include directives d'inclusion peuvent utiliser des caractères generics fnmatch pour charger plusieurs files de configuration à la fois, par ordre alphabétique .

Pour clarifier davantage (j'espère), votre configuration principale est chargée en premier. Lorsque les directives Include sont rencontrées, elles sont chargées dans l'ordre qu'elles apparaissent dans la configuration principale. Si un individu Include utilise un caractère générique, chaque file de configuration correspondant est chargé dans l'ordre alphabétique.

Sur un server debian, apache2.conf peut ressembler à ceci:

 # Include module configuration: # ... Include mods-enabled/*.conf # Include all the user configurations: Include httpd.conf # Include ports listing Include ports.conf # ... # Include generic snippets of statements Include conf.d/ # Include the virtual host configurations: Include sites-enabled/ 

En d'autres termes, tout file se terminant par .conf dans mods-enabled / est chargé avant httpd.conf, qui est chargé avant ports.conf, qui est chargé avant tout file dans conf.d /, etc.

  • Apache: plusieurs sites mais aucune redirection jamais
  • Devrais-je utiliser des hôtes virtuels nommés pour l'intranet?
  • Admet seulement la request de domaine nu, pas les sous-domaines
  • Séparer la sélection de certificate SSL de la configuration de l'hôte virtuel dans apache
  • Coût de Apache VirtualHost
  • vServer Debian problème d'hôte virtuel Linux
  • alerte de panne d'avertissement de main-d'œuvre ssl error
  • Rewriting subdomain.domain.com lorsque d'autres «sous-domaines» existent
  • Comment résoudre le problème d'hôte virtuel
  • L'expéditeur de messagerie "Masquerade" sur un hébergement partagé multi-domaines
  • Tomcat derrière apache
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.