0

Debian 9 と Apache 2 を使用して、/var/www/html/test のディレクトリを指すサブドメインを仮想サーバーに設定したいと考えています。SSL と Let's Encrypt も有効になっているため、サブドメインにも https で到達する必要があります。

私の000-default.confファイルは次のようになります。

<VirtualHost _default_:80>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html


        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
<VirtualHost _default_:443>
        DocumentRoot /var/www/html
        ServerName www.example.com
        <IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
        </IfModule>
        SSLEngine on
        ServerAlias www.example.com
        SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

ファイルdefault-ssl.confは次のようになります。

<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerAdmin webmaster@localhost

                DocumentRoot /var/www/html

                SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
                SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                SSLEngine on

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>

                ServerName www.example.com
                ServerAlias example.com
        </VirtualHost>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

ファイルの新しいコピーを作成し、000-default.conf「test.example.com.conf」という名前を付けて、a2ensite を使用して有効にしました。ファイルは次のようになります。

<VirtualHost _default_:80>

        ServerAdmin webmaster@test.example.com
        DocumentRoot /var/www/html/test

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

<VirtualHost _default_:443>
        DocumentRoot /var/www/html/test
        ServerName test.example.com
        <IfModule mod_headers.c>
                Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
        </IfModule>
        SSLEngine on
        ServerAlias test.example.com
        SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

私のhostsファイルにはエントリが含まれていますSERVER_IP_ADDRESS test.example.com

DNS サーバーには、test.example.com が指している「A」エントリがありSERVER_IP_ADDRESSます。

別のマシンから test.example.com に ping を実行すると、「ホストが見つかりません」で終了し、仮想サーバーで ping を実行すると、それ自体から応答が返されます。

では、なぜ Web ブラウザーに「サーバーが見つかりません」としか表示されないのでしょうか。私は何かを忘れましたか?私の設定に何か問題がありますか?

4

1 に答える 1

0

長いテストと調査の後、私は間違いを見つけました! 3つありました:

  1. DNS A エントリが完了するまでに時間がかかりました
  2. 私の .htaccess 転送により、入力されたサブドメインに関係なく、URL が常に www.example.com に書き換えられました。
  3. ファイルにtest.example.com.conf誤りがあり、サブドメインが https 経由でのみ利用可能になります: ServerAlias 命令が内部にありませんでした<VirtualHost _default_:80>

これまでのところ機能しており、いくつかの改善が必要です...

私の間違いで他の誰かを助けることを願っています!

于 2018-08-07T16:56:43.543 に答える