web-dev-qa-db-ja.com

多くのApache仮想ホストServerAliasesの管理

だから私はApache2によって仮想ホストとして提供されているこのサイトを持っています。そしてそれはすべてそれに解決されることになっている代替ドメイン名のメートルトンを持っています。

これまで、vhost構成ファイルのServerAliasリストにドメインを追加することで、このような処理を行ってきました。しかし、エイリアスドメインの数が増えるにつれて、そのリストは非常に長くなり、扱いにくくなりました。また、ベアドメインと「www」バージョンの両方を別々に追加する必要があります。これは(両方を追加することを忘れないでください)、私がばかで、どちらか一方を追加するのを忘れる余地があります。まだ起こっていませんが、リストが十分に長い場合、ドメインが2、3しかない場合のように、そのような省略が飛び出さないので、いつか避けられないのではないかと心配しています。

エイリアスのリストをvhost構成ファイルから、より簡単に管理できる他の場所にキックする方法があるはずのようです。少なくとも、長いコンマ区切りの行を使用するよりもリストを視覚的にスキャンする方が簡単なので、各エイリアスが独自の行にあるテキストファイルでも改善されます。また、ドメインごとに「www」エイリアスを手動で追加する必要はなく、vhostに対しても「www」サブドメインを自動的に処理する方法があるはずです。しかし、私はこのようなものを探していて、まだ明白な解決策を見つけていません。

それはおそらく私が正しい場所を探していないだけですが、念のために-仮想ホストのServerAliasesを処理するためのよりエレガントな方法はありますか?もしそうなら、それは何ですか?

2
jalefkowit

ファイルから取得する実際のオプションの代わりに、Includeディレクティブを使用して、外部ファイルから任意の構成設定を含めることができます。 (あなたが昔ながらのPerlウィザードなら、mod_Perlオプションもあります;-)

1。Includedirective を使用して、からのServerAliasのリストを含めます。 conf.d/mydomain.confのテキストファイルのように;

<VirtualHost *:80>
    ServerName www.mydomainname.com 
    # instead of ServerAlias, include a file containing those directives
    Include /etc/httpd/conf/MyDomainServerAlias.list
...
</VirtualHost>

次に、ServerAliasディレクティブのプレフィックスが付いたリストを生成します。
/etc/httpd/conf/MyDomainServerAlias.list;

ServerAlias mysqdomain.com www2.mysqdomain.com www.mysqdomain.com www.mysqdomain.com www.mysqdomain.com www.mysqdTTTomain.com www.mCCysqdomain.com www.mysqdomain.com

または、検査とスクリプト作成に便利な場合があるため、1行に1つ。

ServerAlias mysqdomain.com 
ServerAlias www.mysqdomain2.com 
ServerAlias mysqdomain2.com 
ServerAlias www.mysqdomain.com

2。次のことができます 動的に構成<Perl>を使用するApachemod_Perlを使用するブロック

 <Perl>
  $ServerName = `hostname`;
  $ServerAlias = 'somethingelse.com';
  </Perl>

したがって、起動時にエイリアスのリストを構成するために、好きなPerlウィザードリィを使用できます;-)

3。おそらく他の(より単純な;-)方法...

2
Tom H

Vhost構成ファイルのServerAlias行を複数回繰り返すことができます。私はあなたが得られないばかげたtext.fileに近いと思います。ただし、wwwを追加することを忘れないでください...

0
ercpe

スコープ外のメインコンテキストで「キャッチオール」サイトを構成するとどうなりますか?次に、個別の仮想サイトとなるドメインに対してのみServerAliasが必要になります。

0
yrk

あなたのためにそれらの行を埋めるためのプログラムを書いてみませんか?同様のアプリケーションでは、名前ごとにVHostがあり、約50の名前を処理し、Puppetにそれらを生成させます。次に、リストします。

mySite::newSite{ 'example.com': }

また、example.comwww.example.comを持つ2つのVHost(1つはポート80用、もう1つはポート443用)を生成します。これは、ファイルがmySite::newSite行でいっぱいになることを意味しますが、それほど悪くはありません:)

Puppetを使用する必要はありません。どの言語でもこれを支援できます。 Ruby erbファイルはオプションです。

0
Bill Weiss