Apache는 두 번째 가상 호스트를 무시합니다.

Apache는 두 번째 가상 호스트를 무시합니다.

우리는 Ubuntu 서버에서 Apache를 사용하여 웹사이트를 호스팅하고 있습니다. SSL 인증서는 LetsEncrypt로 제공되며 지난 몇 년 동안 모든 것이 잘 작동했습니다.

지난 금요일에 인증서 중 하나를 갱신하려고 했지만 작동하지 않았습니다. .well-known/acme-challenge 폴더가 생성되지 않았습니다. 지난 며칠 동안 여러 가지 작업을 시도했는데 지금은 상황이 더욱 악화되었습니다. 기본 도메인 domain1.de와 두 번째 도메인 domain2.com이 있습니다. domain1.de는 SSL에서 잘 작동합니다. 이제 domain2.com에는 항상 domain1.de 사이트가 표시됩니다.

domain1.de용 구성 파일은 다음과 같습니다.

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName domain1.de
ServerAlias www.domain1.de
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

그리고 SSL:

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
    ServerAdmin webmaster@localhost
    ServerName domain1.de
    ServerAlias www2.domain1.de
    
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/www2.domain1.de/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/www2.domain1.de/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/www2.domain1.de/fullchain.pem
    
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
         SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
    </Directory>
</VirtualHost>
</IfModule>

domain2.com용 구성 파일은 다음과 같습니다.

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName domain2.com
ServerAlias www.domain2.com
DocumentRoot /var/www/domain2.com
ErrorLog ${APACHE_LOG_DIR}/error_journalsuite_com.log
CustomLog ${APACHE_LOG_DIR}/access_journalsuite_com.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =domain2.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

apachectl -S 출력:

root@domain1new /var/www/domain2.com # apachectl -S
VirtualHost configuration:
*:443                  domain1.de (/etc/apache2/sites-enabled/domain1.de-ssl.conf:2)
*:80                   is a NameVirtualHost
         default server domain1.de (/etc/apache2/sites-enabled/domain1.de.conf:1)
         port 80 namevhost domain1.de (/etc/apache2/sites-enabled/domain1.de.conf:1)
                 alias www2.domain1.de
         port 80 namevhost domain2.com (/etc/apache2/sites-enabled/domain2.com.conf:1)
                 alias www.domain2.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

여기와 다른 사이트를 검색하는 데 시간을 보냈는데 지금은 길을 잃었습니다. 팁이나 아이디어가 있나요?

감사해요

답변1

domain2.com에 대한 HTTPS 포트 443 구성이 누락되었습니다. 포트 80을 사용하는 HTTP가 작동합니다. 테스트해 보면 curl -v http://domain2.com작동하지만 적절한 구성이 없고 domain 의 기본값을 사용하는 https://domain2.com(귀하의 )로 리디렉션되는 것을 볼 수 있습니다 . 으로 확인하면 에 대한 TLS 인증서를 제공 하고 에 대해 수행하는 것을 볼 수 있습니다 .RewriteRuleVirtualHost _default_:443domain1.decurl -v -k https://domain2.comdomain1.de301 Redirecthttps://www2.domain1.de/

문제를 해결하려면 적절한 SSLEngine 구성 설정을 <VirtualHost *:443>생성 해야 합니다 .ServerName domain2.com

관련 정보