web-dev-qa-db-ja.com

Apacheでデフォルトのドキュメントルートを無効にする方法は?

Apache Httpdを実行しているサーバーでいくつかのWebサイトをホストしています。各ウェブサイトには、独自のドメインまたはサブドメインと仮想ホストがあります。したがって、デフォルトのドキュメントルートは必要ありません。 /etc/httpd/conf/httpd.confDocumentRootを無効にすることはできますか?

13
danijar

他の回答をありがとう。権限なしでデフォルトの仮想ホストを追加することで解決しました。グローバルのDocumentRootおよびServerNameオプションは、仮想ホストで指定されたものと一致する必要があります。

/ etc/httpd/conf/httpd.conf

...
ServerName <server-ip>:80

DocumentRoot "/var/www/html"

<Directory />
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>
...

/ etc/httpd/conf.d/default.conf

<VirtualHost *:80>
        ServerName <server-ip>
        DocumentRoot /var/www/html
</VirtualHost>

このようにして、サーバーがIPで直接アクセスされると、403 Forbiddenメッセージが表示されます。これはまさに私が望んでいたことです。そのために既存のディレクトリ/var/www/htmlが必要ない場合はさらに良いでしょうが、代わりに/dev/nullのようなものを指定すると、Apacheは不平を言います。

10
danijar

あなたがそれをしたいのか分かりません。 Apache構成にデフォルトの仮想ホストがない場合、最初に定義された仮想ホストは デフォルト になります。

本当に必要なのは、デフォルトで空白ページを提供することだけです。

6
user9517

はいといいえ。

DocumentRoot ディレクティブをコメント化または削除できます。問題ありません。ただし、デフォルトではデフォルトディレクトリPREFIX/htdocs/ここで、Apacheのビルド時にPREFIXが設定されます。

VirtualHostsを設定すると、明示的に構成された仮想ホストによって処理されないすべての要求がデフォルトの仮想ホスト(通常は最初の仮想ホストですが、httpd -S 教えてくれます)。

6
HBruijn

.conf内にある拡張子/etc/httpd/conf.d/のApache構成ファイルは、Apache構成の一部として含まれます。したがって、デフォルトの「ようこそ」ページ構成を無効にするには、その構成の名前を変更する必要があります/etc/httpd/conf.d/welcome.conf:

ステップ1は、デフォルトのウェルカムファイルを移動します。

Sudo mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.backup 

ステップ2番目の再起動Appache2サービス

Sudo systemctl restart httpd
1
Usman Ali Maan

デフォルトのポートを次のように変更するだけです。

Listen 80
Listen 8080 # any fake port

* .80をVirtualHostに残します

Apache2とCentos 7で動作します

documentation で見つけることができる他の例。 _default_変数を見てください。

0
Vasin Yuriy

このページを無効にするには、ファイル/etc/httpd/conf.d/welcome.confを別の名前に変更する必要があります。または、必要がなければ、単に削除することもできます。

mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf_backup

Apacheが次のコマンドで(rootとして)再起動されていることを確認します。

systemctl restart httpd

0

/etc/httpd/conf/httpd.confで、Listenディレクティブが

Listen 80

それは意味です

*:80

カップルを定義しました<listener> + <servename> /etc/httpd/conf/httpd.confと/etc/httpd/conf.d/default.confで同じです:*:80 + <server-ip>。したがって、Apacheでは1つしか考慮されません。

したがって、vhost設定は使用できません

/etc/httpd/conf/httpd.confは、/ var/www/htmlディレクトリへのアクセスをブロックするのに十分です。

単に追加:

<Directory /var/www/html>
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>

https://httpd.Apache.org/docs/2.4/en/vhosts/name-based.html#alg をお読みください。

サーバーが適切な名前ベースの仮想ホストを選択する方法

名前ベースの仮想ホスト解決の最初のステップはIPベースの解決であることを認識することが重要です。名前ベースの仮想ホスト解決は、候補をIPベースの最適な一致に絞り込んだ後でのみ、最も適切な名前ベースの仮想ホストを選択します。すべてのVirtualHostディレクティブでIPアドレスにワイルドカード(*)を使用すると、このIPベースのマッピングは無関係になります。

要求が到着すると、サーバーは、要求で使用されているIPアドレスとポートに基づいて、最も一致する(最も具体的な)引数を見つけます。この最も一致するアドレスとポートの組み合わせを含む仮想ホストが複数ある場合、ApacheはServerNameディレクティブとServerAliasディレクティブをリクエストに含まれるサーバー名とさらに比較します。

名前ベースの仮想ホストからServerNameディレクティブを省略すると、サーバーはデフォルトで、システムのホスト名から派生した完全修飾ドメイン名(FQDN)になります。この暗黙的に設定されたサーバー名は、直感に反する仮想ホストマッチングにつながる可能性があるため、お勧めしません。

IPとポートの組み合わせのデフォルトの名前ベースの仮想ホスト最も一致するIPアドレスとポートの組み合わせを含む仮想ホストのセットに一致するServerNameまたはServerAliasが見つからない場合、最初にリストされている、一致する仮想ホストが使用されます。

0
Jordan LE NUFF