Перенаправление Apache на неправильный виртуальный хост при перенаправлении на https

Проблема

Доступ к studentmossa.domain.com приводит к перенаправлению на server.domain.com .

Краткая ценная информация

Я работает Fedora 31 (ядро 5.5.15-200.fc31.x86_64) с Apache / 2.4.43 (Fedora) .

У меня четыре веб-сайта (1 домен), управляемых виртуальным хостом Apache.

  • domain.com
  • nextcloud.domain.com
  • server.domain.com
  • studentmossa.domain.com

apachectl configtest дает:

Синтаксис OK

httpd - S дает:

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server domain.com (/etc/httpd/conf.d/domain.com.conf:2)
         port 80 namevhost domain.com (/etc/httpd/conf.d/domain.com.conf:2)
                 alias domain.com
         port 80 namevhost nextcloud.domain.com (/etc/httpd/conf.d/nextcloud.domain.com.conf:2)
                 alias nextcloud.domain.com
         port 80 namevhost studentmossa.domain.com (/etc/httpd/conf.d/server.domain.com.conf:2)
                 alias server.domain.com
         port 80 namevhost studentmossa.domain.com (/etc/httpd/conf.d/studentmossa.domain.com.conf:2)
                 alias studentmossa.domain.com
*:443                  is a NameVirtualHost
         default server domain.com (/etc/httpd/conf.d/domain.com.conf:13)
         port 443 namevhost domain.com (/etc/httpd/conf.d/domain.com.conf:13)
                 alias domain.com
         port 443 namevhost nextcloud.domain.com (/etc/httpd/conf.d/nextcloud.domain.com.conf:15)
                 alias nextcloud.domain.com
         port 443 namevhost studentmossa.domain.com (/etc/httpd/conf.d/server.domain.com.conf:11)
                 alias server.domain.com
         port 443 namevhost studentmossa.domain.com (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost studentmossa.domain.com (/etc/httpd/conf.d/studentmossa.domain.com.conf:16)
                 alias studentmossa.domain.com
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex lua-ivm-shm: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/etc/httpd/run/" mechanism=default 
Mutex cache-socache: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex watchdog-callback: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex authdigest-client: 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

server.domain.com - это прокси от http: // localhost /: 19999 (это настройка netdata)

Ниже приведен файл конфигурации для server.domain.com :

ServerName server.domain.com
<VirtualHost *:80>
        ServerAlias server.domain.com
        ErrorLog /var/log/httpd/server.domain.com/non_https_error.log
        CustomLog /var/log/httpd/server.domain.com/non_https_access.log combined
        Redirect / https://server.domain.com
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAlias server.domain.com
        ErrorLog /var/log/httpd/server.domain.com/non_https_error.log
        CustomLog /var/log/httpd/server.domain.com/non_https_access.log combined

        RewriteEngine on
        ProxyRequests off
        ProxyPreserveHost On

        <Proxy *>
                Require all granted
        </Proxy>
        ProxyPass "/" "http://localhost:19999/" connectiontimeout=5 timeout=30 keepalive=on
        ProxyPassReverse "/" "http://localhost:19999/"

        SSLEngine on
        SSLProtocol all -TLSv1 -TLSv1.1
        SSLCipherSuite HIGH:!aNULL:!MD5:!3DES
        SSLHonorCipherOrder on
        SSLCertificateFile /etc/letsencrypt/live/server.domain.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/server.domain.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

и следующий файл конфигурации для studentmossa.domain.com :

ServerName studentmossa.domain.com
<VirtualHost *:80>
        ServerAlias studentmossa.domain.com
        ServerName studentmossa.domain.com
        ErrorLog /var/log/httpd/studentmossa.domain.com/non_https_error.log
        CustomLog /var/log/httpd/studentmossa.domain.com/non_https_access.log combined

        Redirect / https://studentmossa.domain.com
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAlias studentmossa.domain.com
        DocumentRoot /var/www/domain/studentmossa.domain.com/

        ErrorLog /var/log/httpd/studentmossa.domain.com/non_https_error.log
        CustomLog /var/log/httpd/studentmossa.domain.com/non_https_access.log combined
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateFile /etc/letsencrypt/live/studentmossa.domain.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/studentmossa.domain.com/privkey.pem
</VirtualHost>
</IfModule>

То, что я пробовал

Я попытался изменить правило перенаправления вместо Redirect / https://studentmossa.domain.com Я пробовал:

#RewriteEngine on
#RewriteCond %{SERVER_NAME} =studentmossa.domain.com
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

на всех vhosts. Это дает тот же результат, конечно, при изменении SERVER_NAME

Любая помощь приветствуется

0
задан 11 April 2020 в 17:11
1 ответ

Поместив ServerName в блоки , он эффективно решил проблему.

1
ответ дан 11 April 2020 в 16:51

Теги

Похожие вопросы