Hi,

I define both vhost with <hostname>:<port> because each “hostname” links to 
different hosts. Machines A and B are differents and they are serving its 
sites, so in Apache I must declare (I think…) each host because I need to 
differentiate them. If I use *:<port>, how are I differentiating both hosts if 
they are different?

Output of “apachectl -S”:

  *   in my running R (CentOS), where redirection works:

VirtualHost configuration:

my_ip_address:80     is a NameVirtualHost

         default server A.mydomain (/etc/httpd/conf.d/000-default.conf:1)

         port 80 namevhost A.mydomain (/etc/httpd/conf.d/000-default.conf:1)

                 alias A

                 alias A.mydomain.v2

         port 80 namevhost B.mydomain (/etc/httpd/conf.d/000-default.conf:101)

                 alias B

                 alias B.mydomain.v2

ServerRoot: "/etc/httpd"

Main DocumentRoot: "/var/www/html"

Main ErrorLog: "/etc/httpd/logs/error_log"

Mutex mpm-accept: using_defaults

Mutex authdigest-opaque: using_defaults

Mutex proxy-balancer-shm: using_defaults

Mutex rewrite-map: using_defaults

Mutex authdigest-client: using_defaults

Mutex proxy: using_defaults

Mutex authn-socache: using_defaults

Mutex default: dir="/run/httpd/" mechanism=default

PidFile: "/run/httpd/httpd.pid"

Define: _RH_HAS_HTTPPROTOCOLOPTIONS

Define: DUMP_VHOSTS

Define: DUMP_RUN_CFG

User: name="apache" id=48

Group: name="apache" id=48

  *   in my new R (Rocky-8.9), where redirection doesn’t work:

VirtualHost configuration:

192.168.1.2:80         A.mydomain (/etc/httpd/conf.d/000-default.conf:1)

192.168.1.5:80         B.mydomain (/etc/httpd/conf.d/000-default.conf:101)

ServerRoot: "/etc/httpd"

Main DocumentRoot: "/var/www/html"

Main ErrorLog: "/etc/httpd/logs/error_log"

Mutex authdigest-opaque: using_defaults

Mutex watchdog-callback: using_defaults

Mutex proxy-balancer-shm: using_defaults

Mutex rewrite-map: using_defaults

Mutex authdigest-client: using_defaults

Mutex lua-ivm-shm: using_defaults

Mutex proxy: using_defaults

Mutex authn-socache: using_defaults

Mutex default: dir="/etc/httpd/run/" mechanism=default

Mutex cache-socache: using_defaults

PidFile: "/etc/httpd/run/httpd.pid"

Define: DUMP_VHOSTS

Define: DUMP_RUN_CFG

User: name="apache" id=48

Group: name="apache" id=48



Thanks a lot!

De: Frank Gingras <thu...@apache.org>
Enviat: divendres, 15 de desembre de 2023 15:49
Per a: users@httpd.apache.org
Tema: Re: [users@httpd] Problems with "VirtualHost"



On Fri, Dec 15, 2023 at 2:57 AM Gestió Servidors 
<sysadmin.c...@uab.cat.invalid<mailto:sysadmin.c...@uab.cat.invalid>> wrote:
Hello,

I have a small Apache where I run a redirection to two private hosts. My 
machine (R, router) is connected to Interned and to a private LAN 
(192.168.x.x/16). Behind “R”, there are two machines (A and B) that are serving 
two websites. R has an DNS alias with two public DNS names for A and B (because 
some years ago, A and B were machines with public IP addresses). Now, I want to 
change R and configure a new R machine (newest distribution). However, in new 
R, redirect doesn’t run and I can’t get browing from Internet to A and B 
websites. I copypaste here all information:


  *   R:

     *   CentOS-7.9.2009
     *   Apache: 2.4.6-99.el7.centos.1

  *   new R:

     *   Rocky Linux 8.9
     *   Apache: 2.4.37-62.module+el8.9.0+1436+2b7d5021

My configuration file where I have configured “VirtualHost” is the same in both 
servers:

<VirtualHost A.mydomain:80>
        ServerAdmin foo@boo<mailto:sysadmin.c...@uab.cat>
        ServerName A.mydomain
        ServerAlias A A.mydomain
        LogLevel info
        ErrorLog /var/log/httpd/virtualhost-A.log
        ProxyPass / http://192.168.1.2/
        ProxyPassReverse / http://192.168.1.2/
        <Location />
                <RequireAny>
                        Require ip my_network
                </RequireAny>
        </Location>

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/html/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride all
                <RequireAny>
                        Require ip my_network
                </RequireAny>
        </Directory>
</VirtualHost>

<VirtualHost B.mydomain:80>
        ServerAdmin foo@boo<mailto:sysadmin.c...@uab.cat>
        ServerName B.mydomain
        ServerAlias B B.mydomain
        LogLevel info
        ErrorLog /var/log/httpd/virtualhost-B.log
        ProxyPass / http://192.168.1.5/
        ProxyPassReverse / http://192.168.1.5/
        <Location />
                <RequireAny>
                        Require ip my_network
                </RequireAny>
        </Location>

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/html/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride all
                <RequireAny>
                        Require ip my_domain
                </RequireAny>
        </Directory>
</VirtualHost>

With this file, in server R, redirection runs perfectly and when I browse 
http://A/mysiteA, R redirect connection to private machine A (the same when I 
browse to http://B/mysiteB). However, in new R, when I browse to 
http://A/mysiteA (or http://B/mysiteB), there are no redirection and I can see 
at logs this message: File does not exist: /var/www/html/mysiteA (or  File does 
not exist: /var/www/html/mysiteB).

Where is the problem?

Thanks!


You don't want to define a vhost as <hostname>:<port>, unless you know exactly 
what you are doing.  When unsure, always use *:<port>.

Show the output from apachectl -S or httpd -S after you applied the fixes.

Reply via email to