0

Apacheサーバーをセットアップしましたが、このApacheサーバーは多数の仮想ホストを指しています。

仮想ホストの定義は次のとおりです。

<VirtualHost *:80>
        ServerName <url>

        RewriteEngine on
        ReWriteCond %{SERVER_PORT} !^443$
        RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

        # Enable client-side caching of resources
        ExpiresActive On
        ExpiresByType image/png "now plus 48 hours"
        ExpiresByType image/jpeg "now plus 48 hours"
        ExpiresByType image/gif "now plus 48 hours"
        ExpiresByType application/javascript "now plus 48 hours"
        ExpiresByType application/x-javascript "now plus 48 hours"
        ExpiresByType text/javascript "now plus 48 hours"
        ExpiresByType text/css "now plus 48 hours"

</VirtualHost>

.
.
.

<VirtualHost *:80>
        ServerName <url>

        RewriteEngine on
        ReWriteCond %{SERVER_PORT} !^443$
        RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

        # Enable client-side caching of resources
        ExpiresActive On
        ExpiresByType image/png "now plus 48 hours"
        ExpiresByType image/jpeg "now plus 48 hours"
        ExpiresByType image/gif "now plus 48 hours"
        ExpiresByType application/javascript "now plus 48 hours"
        ExpiresByType application/x-javascript "now plus 48 hours"
        ExpiresByType text/javascript "now plus 48 hours"
        ExpiresByType text/css "now plus 48 hours"

</VirtualHost>

上記の例に似た仮想ホスト定義がたくさんあります。

それ以外の定義はほとんどServerName同じなので、これらの共通の定義をグローバルに定義する方法はないかと思いました。

私はApache構成に不慣れであり、仮想ホスト定義の数が増えるにつれて、構成ファイルが長くなり、冗長になると感じました。

4

1 に答える 1

0

いくつかのオプションがあります。まず、使用するディレクティブによっては、サーバーレベルで追加できるものになる場合があります。

次に、このユースケース専用のmod_macroというモジュールがあります。仮想ホストに対して単一のマクロを定義できます。

<Macro VHost $host $port $dir>
  Listen $port
  <VirtualHost *:$port>
    ServerName $host
    DocumentRoot $dir

    <Directory $dir>
      # do something here...
    </Directory>

    # etc etc etc

  </VirtualHost>
</Macro>

そしてそれをこのように呼びます:

Use VHost www.apache.org 80 /projects/apache/web

ディレクティブ専用のマクロを宣言し、次のExipresように呼び出すことでマクロを含めることもできます。

Use ExpireMacro

仮想ホスト内。

私が使用mod_macroし、それはうまく機能します、それはあなたのapache設定を単純化するための素晴らしい方法です。

編集:モジュールがすでにサーバー上にある場合を除いて、モジュールをコンパイルしてインストールする必要があります。つまり、rootアクセスが必要です。

于 2012-06-20T16:41:01.927 に答える