Apache Httpdを実行しているサーバーでいくつかのWebサイトをホストしています。各ウェブサイトには、独自のドメインまたはサブドメインと仮想ホストがあります。したがって、デフォルトのドキュメントルートは必要ありません。 /etc/httpd/conf/httpd.conf
でDocumentRoot
を無効にすることはできますか?
他の回答をありがとう。権限なしでデフォルトの仮想ホストを追加することで解決しました。グローバルの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は不平を言います。
あなたがそれをしたいのか分かりません。 Apache構成にデフォルトの仮想ホストがない場合、最初に定義された仮想ホストは デフォルト になります。
本当に必要なのは、デフォルトで空白ページを提供することだけです。
はいといいえ。
DocumentRoot
ディレクティブをコメント化または削除できます。問題ありません。ただし、デフォルトではデフォルトディレクトリPREFIX/htdocs/
ここで、Apacheのビルド時にPREFIXが設定されます。
VirtualHostsを設定すると、明示的に構成された仮想ホストによって処理されないすべての要求がデフォルトの仮想ホスト(通常は最初の仮想ホストですが、httpd -S
教えてくれます)。
.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
デフォルトのポートを次のように変更するだけです。
Listen 80
Listen 8080 # any fake port
* .80をVirtualHostに残します
Apache2とCentos 7で動作します
documentation で見つけることができる他の例。 _default_変数を見てください。
このページを無効にするには、ファイル/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
/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が見つからない場合、最初にリストされている、一致する仮想ホストが使用されます。