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


13

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

回答:


10

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

/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が不平を言います。


6

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

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


6

はいといいえ。

DocumentRootディレクティブをコメント化または削除できます。問題はありません。しかし、PREFIX/htdocs/apacheをビルドするときにPREFIXが設定されているデフォルトのディレクトリがデフォルトになるので、それはあまり達成されません。

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


1

.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

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つしか考慮されません。

だから、あなたの仮想ホストの設定は役に立たない。

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


0

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

Listen 80
Listen 8080 # any fake port

* .80をVirtualHostに残します

Apache2とCentos 7で動作します

ドキュメントで見つけることができるより多くの例。_default_変数を見てください。


0

このページを無効にするには、ファイル/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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.