web-dev-qa-db-ja.com

Apache仮想ホストの構成-すべてのサブドメインを404に

Apacheを構成しようとするのは初めてなので、助けていただければ幸いです。

これは私が達成したいことです:

  • 未定義のサブドメインはすべて、定義されていない場合はnot foundになります
  • ルートフォルダーにアクセスできないようにする

今、これは私がこれまで持っているものです:

my.conf

ServerName server1 (is hostname)

ServerSignature off
ServerTokens prod

Options -Includes
Options -ExecCGI

sites-available/default

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /htdocs

    <Directory />
            Options None
            Order deny,allow
            Deny from all
    </Directory>

    <Directory /htdocs/>
            Options -Indexes -FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ErrorLog ${Apache_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>

sites-available/example

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /htdocs/example

    ErrorLog ${Apache_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>

さて、私の質問は:

  • Default-configの「ディレクトリ/」もexample.comサイトに適用されますか?それともそこに入れる必要がありますか。それとも、my.confに入れるべきですか?
  • 「Directory/htdocs /」に対する同じ質問-これもexample.com-configに入れるべきですか?もちろん、「Directory/htdocs/example /」のようになります。
  • 現時点では、example.comのすべてのサブドメインがデフォルトディレクトリにつながっています。どうすればそれを防ぐことができますか?そこにつながるのはサーバーIPだけです。
1
sleepless

未定義のサブドメインの場合、既知のすべてのsubdomain.example.com仮想ホストの後に新しい仮想ホストを追加できます。

<VirtualHost *:80>
    ServerName *.example.com
    Redirect 404 /
</VirtualHost>

Redirect 404 /は、すべてのリクエストで「404 Not found」と応答します。


構成ディレクティブのスコープ

ディレクティブは、サーバー全体にすることも、特定のディレクトリ、ファイル、仮想ホストなどに制限することもできます。Directory、DirectoryMatch、Files、FilesMatch、If、IfDefine、IfModule、IfVersion、Location、LocationMatch、Proxy、ProxyMatch、VirtualHostが呼び出されます Configuration Section Containers :それら内のディレクティブは、コンテナ内のみに影響します。

次の例では、「すべて拒否」が/htdocs/private.htmlに影響し、「オプション-インデックス」が「/ htdocs」に影響しますが、ServerName example.comのVirtualHost内のみです。

<VirtualHost *:80>
    ServerName example.com
    <Directory /htdocs/>
        Options -Indexes
        <Files private.html>
           Require all denied
        </Files>
    </Directory>
<VirtualHost *:80>
0
Esa Jokinen