简体   繁体   中英

Apache serving name-based virtual Host from server hostname (but shouldn't be)

I have an Apache httpd server (2.4.6) running on Centos, serving several Name-based virtual hosts. The fqdn / hostname of the server should be serving no content, but it redirects to one of the Name-based virtual hosts and I don't understand why, or how to stop it.

In the configs below, a request to http://host.mydomain.org/ is redirected to http://www.customer.co.uk/ .

Any ideas as to why, and the right way to stop it appretiated.

My httpd.conf is:

ServerRoot "/etc/httpd"
Listen 80

Include conf.modules.d/*.conf

User apache
Group apache

ServerAdmin root@xxx.org
ServerName host.mydomain.org:80

<Directory />
    AllowOverride none
    Require all denied
</Directory>

DocumentRoot "/var/www/html"

<Directory "/var/www">
    AllowOverride None
    Require all denied
</Directory>

<Directory "/var/www/html">
        Options None
    AllowOverride None
    Require all denied
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog "logs/error_log"
LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>

<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all denied
</Directory>

<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddHandler cgi-script .cgi
    AddHandler cgi-script .pl
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

AddDefaultCharset ISO-8859-1

<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>

EnableSendfile on
TraceEnable Off
ServerTokens Prod

IncludeOptional conf.d/*.conf

An example virtual host is:

<VirtualHost *:80>
    DocumentRoot /home/xxx/customer/docs
    ServerName www.customer.co.uk
    ErrorLog /home/xxx/customer/logs/error_log
    CustomLog /home/xxx/customer/logs/access_log combined
        <Directory /home/xxx/customer/docs>
                AllowOverride None
                Options None
                Require all granted
        </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName customer.co.uk
    Redirect permanent / http://www.customer.co.uk/
</VirtualHost>

<VirtualHost *:80>
    ServerName www.customer.mydomain.org
    Redirect permanent / http://www.customer.co.uk/
</VirtualHost>

Thanks very much Kevin

The first VirtualHost in the configuration file has the highest priority and can be seen as the default or primary server. That means that if a request is received that does not match one of the specified ServerName or ServerAlias directives, it will be served by this first <VirtualHost> .

You can prevent this by adding this (for example) as the first VirtualHost:

<VirtualHost *:80>
    ServerName default
    RewriteEngine On
    RewriteRule ^ - [F]
</VirtualHost>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM