4

名前ベースの仮想ホストを使用している Apache サーバーがあります。

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot /var/www/localhost
    ServerName localhost.localdomain
    ServerAlias localhost.localdomain
    ErrorLog logs/localhost_error_log
    CustomLog logs/localhost_access_log common
    <Directory /var/www/localhost1>                           
       Order Allow,Deny
       Allow from all
    </Directory>
</VirtualHost>
<VirtualHost *:80>
    ServerName localhost1.localdomain
    ServerAlias localhost1.localdomain
    DocumentRoot /var/www/localhost1
    ErrorLog logs/localhost1_error_log
    CustomLog logs/localhost1_access_log common
    <Directory /var/www/localhost1>                           
       Order Allow,Deny
       Allow from all
    </Directory>
</VirtualHost>

localhost.localdomain と localhost1.localdomain と入力すると、それぞれフォルダー /var/www/localhost と /var/www/localhost1 から適切なページが取得されます。しかし、私はそうします

ssh -L 0.0.0.0:10080:localhost.localdomain:80 -L 0.0.0.0:10081:localhost1.localdomain:80 localhost

また、localhost:10080 と localhost:10081 はどちらも /var/www/localhost からの応答になります。SSHトンネル経由で接続しているにもかかわらず、Apacheにドメインを認識させることは可能ですか?

4

1 に答える 1

7

Apache vhost ServerName をブラウザのアドレス バーに入力したものと一致させる必要があります。

この vhost を仮定すると:

ServerName foo.com

次に、ローカルの /etc/hosts ファイルで:

127.0.0.1  foo.com

それで

ssh -L8080:127.0.0.1:80 user@apache

それで

wget http://foo.com:8080

これで、リクエストは Host: foo.com で行われ、正しい vhost にヒットするはずです。

于 2013-05-30T14:27:37.153 に答える