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 httpd.conf - configuration de l'hôte virtuel
  • Tous les hôtes virtuels Nginx redédient vers un VHost
  • Apache2 vhost *: 80 vs ip: 80
  • Parfois, Apache produit le code source PHP
  • Comment configurer l'hôte virtuel cookieless dans Apache2?
  • est-ce que "ServerAdmin email@domain.tld" est requirejs dans VirtualHost dans Apache?
  • Apache 2.4 - 403 code d'état HTTP
  • Apache: hôtes virtuels avec plusieurs sites avec plusieurs racines de documents: est-ce possible?
  • Host virtuel basé sur le nom sur une adresse IP spécifique
  • Secure Webmin avec Apache VirtualHost
  • Apache Redirect de https vers https
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.