仮想ホストがサーバーステータスディレクティブを阻止する

仮想ホストがサーバーステータスディレクティブを阻止する

Ubuntu 16.4 VM で Apache 2.4 を正常にセットアップし、複数の仮想ホストをセットアップしました。サーバー ステータスを確認したいのですが、最初の仮想ホストがそれを妨げています。これについては、Apache 2.4 のドキュメントを何度も読み返しました。次の内容を /etc/apache2/apache.conf に、次に /etc/apache2/mods-enabled/status.conf に、最後に /etc/apache2/sites-enabled/0firstvhost.conf に記述しました。

<Location "/server-status">
      SetHandler server-status
      Require ip 10.211.55.0/24
    </Location>

ApacheのドキュメントやServerFaultでこのテーマに関する多くの投稿を読んで、Apache 2.4に適用できるさまざまなバリエーションを試しました。

mod_statusが動作していることは、実行時に確認することで確認できます。

sudo apachectl -M | grep status

もちろん、毎回 apachectl configtest をチェックし、apache2 サービスを再起動して 10.211.55.3/server-status を参照できるかどうかを確認しましたが、Drupal PHP アプリが干渉し続けます。この vhost のルートには .htaccess がありません。

私はこの指令を指令の内外に配置しました。

VMのIPアドレスをブラウザで確認し、VM内で実行します

curl localhost/server-status
curl 10.211.55.3/server-status

Drupal アプリが最初に読み込まれます。次に何を試せばいいでしょうか? ありがとう、サム

答え1

これを見つけたのでデフォルトサイトの.htaccessがmod_statusを妨げていた動作しません。彼らの解決策は私にはうまくいきませんでしたが、私はとにかく仮想ホストを扱っているので、.htaccess なしで仮想ホストを作成することができました。Debian の /etc/hosts ファイルに任意のホストを追加しました:

127.0.0.1  foo.org

他の仮想ホストの中に空のディレクトリを作成し、新しいサイトを作成して有効にしました。

<Directory /home/foo.org>
</Directory>
<Location /server-status>
    SetHandler server-status
    Require local
    Require ip 127.0.0.1
    Require ip ::1
</Location>

<VirtualHost *:80>
  ServerAdmin [email protected]
  ServerName foo.org
</VirtualHost>

ローカルホストでデータを見ることができます

curl foo.org/server-status

答え2

私も問題を抱えていました仮想ホスト /etc/sites-enabled/example.confhttp://localhost/server-info へのリクエストの処理。これは実際には次のように処理したかった。情報

# File /etc/sites-enabled/example.conf
<VirtualHost *:80>
  ServerName example.com
  
  # ...
</VirtualHost>

問題は、Apacheが、設定されたリクエストと一致しない場合に、デフォルトのフォールバックリクエスト処理動作を持っていることです。仮想ホストサーバーの名前(見る12)。 として情報のデフォルトの設定ファイルを使用し/etc/apache2/mods-available/info.load/etc/apache2/mods-available/info.conf独自の設定を指定しない仮想ホストそしてサーバーの名前Apacheのフォールバックが作動したため、example.conf 仮想ホストhttp://localhost/server-info へのリクエストを処理します。

私は次の方法で問題を解決しました:

ファイルを作成する/etc/apache2/mods-available/localhost-server-info.load知らせmods-available)。 これはコピーオリジナルのinfo.load:

LoadModule info_module /usr/lib/apache2/modules/mod_info.so

ファイルを作成する/etc/apache2/sites-available/localhost-server-info.conf知らせsites-available)。これはオリジナルのを改変したものでinfo.conf、その内容を仮想ホストそして提供するサーバーの名前:

# Get mod_info information by requesting http://localhost/server-info
#
# Enable by executing
# service apache2 stop
# a2dismod info
# a2enmod localhost-server-info
# a2ensite localhost-server-info
# service apache2 start
#
# Disable by executing
# service apache2 stop
# a2dissite localhost-server-info
# a2dismod localhost-server-info
# service apache2 start

<IfModule mod_info.c>
  <VirtualHost *:80>
    # Adapt ServerName to your needs
    # Avoid ServerName collision with any other active VirtualHosts
    ServerName localhost

    <Location /server-info>
      SetHandler server-info
      # Adapt Require to your needs
      # Require local
      # Require ip 192.0.2.0/24
    </Location>
  </virtualHost>
</IfModule>

オリジナルを無効にする情報モジュール(まだ有効になっている場合)を有効にし、新しいローカルホストサーバー情報モジュールそしてサイト:

service apache2 stop
a2dismod info
a2enmod localhost-server-info
a2ensite localhost-server-info
service apache2 start
  • http://example.com/サーバー情報今後は、例.comVirtualHost (おそらく 404 ページが表示されます)。
  • http://localhost/server-infoは次のように処理されるはずです。情報
  • http://127.0.0.1/サーバー情報およびその他の未設定サーバーの名前sはApacheのフォールバック処理に従って処理される必要があります。たとえば、私の例では例.comVirtualHost (おそらく 404 ページが表示されます)。

関連情報