3

Apache サーバーの背後で 2 つの Web サイトを実行しています。

そのうちの 1 つは、api.xyzzy.com へのリクエストを処理します。

もう 1 つは、入ってくる他のトラフィック (数十のドメイン、サブドメインなど) を処理するため、キャッチオール ワイルドカードです。

以下の構成を使用すると、 http://api.xyzzy.com/の下のディープ リンクへのリクエストは正しい仮想ホスト (最初のホスト) に送信されますが、トップレベルのリクエストはhttp://api.xyzzy.comに送信されます。 /代わりに、2 番目のキャッチオール ワイルドカード仮想ホストをロードします。

ここで私は何を間違えましたか?

LoadModule passenger_module /home/webby/.rvm/gems/ruby-1.9.3-p286/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /home/webby/.rvm/gems/ruby-1.9.3-p286/gems/passenger-3.0.18
PassengerRuby /home/webby/.rvm/wrappers/ruby-1.9.3-p286/ruby

NameVirtualHost *:80

<VirtualHost *:80>
        ServerName api.xyzzy.com
        ServerAlias api.xyzzy.com
        RailsEnv production
        DocumentRoot /home/webby/rails/current/public
</VirtualHost>

<VirtualHost *:80>
        ServerAlias *
        <Directory /usr/local/xyzzy/webapps/wwwroot >
                Options Indexes MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
        DocumentRoot /usr/local/xyzzy/webapps/wwwroot
</VirtualHost>

アップデート:

以下の構成は現在、期待どおりに機能しているようです。これは@Winfieldの回答に基づいています。

私のテストが間違っていたようです。私のブラウザ (Chrome) は、入力したアドレスに https (http ではなく) プレフィックスを付けてオートコンプリートしていた可能性があります。残念ながら、何十もの構成の順列を試すまでこの異常に気付かなかったため、最終的な適切な解決策が何であったかを判断するのは困難です. より信頼性の高いテストを行うには、ブラウザー バーに入力するのではなく、コマンド ラインで curl を使用する必要がありました。

<VirtualHost *:80>
        <Directory /usr/local/xyzzy/webapps/wwwroot >
                Options Indexes MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
        DocumentRoot /usr/local/xyzzy/webapps/wwwroot
</VirtualHost>

<VirtualHost *:80>
        ServerAlias api.xyzzy.com
        RailsEnv production
        DocumentRoot /home/webby/rails/current/public
</VirtualHost>
4

1 に答える 1

2

これを解決するには、ワイルドカード仮想ホストよりも「デフォルト」の仮想ホスト(最初に定義された)を使用する方がよいと思います。順序を入れ替えて、適切なサーバー名を入力できます。これにより、API 以外のホスト名がデフォルト (最初の) vhost にヒットし、ホスト名で API に一致するものはすべて api vhost にヒットするようになります。そのようです:

<VirtualHost *:80>
        ServerName www.xyzzy.com
        ServerAlias xyzzy.com
        <Directory /usr/local/xyzzy/webapps/wwwroot >
                Options Indexes MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
        DocumentRoot /usr/local/xyzzy/webapps/wwwroot
</VirtualHost>

<VirtualHost *:80>
        ServerName api.xyzzy.com
        ServerAlias api.xyzzy.com
        RailsEnv production
        DocumentRoot /home/webby/rails/current/public
</VirtualHost>
于 2012-12-19T20:47:29.747 に答える