web-dev-qa-db-ja.com

VirtualHostは、Ubuntu 14.04上のApacheで常にデフォルトのホストを返します

デフォルトのlocalhost以外の仮想ホストをセットアップしようとしました。仮想ホストhttp://testを呼び出そうとするたびに、http://localhostのディレクトリにあるデフォルトのApache2インデックスファイルを取得します。さらに、Apacheは、VirtualHostファイルと再読み込みApache(a2dissite)の両方を無効(service Apache2 reload)にした後も、このページを返します。

仮想ホストが機能していないと何が問題になる可能性がありますか?

構成:

私のディレクトリ構造は次のとおりです。

/var/www/html                  # Default localhost dir
/var/www/html7index.html       # Apache2 default index

/var/www/test                  # HTML dir for the virtual Host
/var/www/test/index.html       # My "website" 

/etc/hostsのコンテンツ:

127.0.0.1       localhost
127.0.1.1       Laptop
127.0.0.1       test

/etc/Apache2/sites-availableのディレクトリコンテンツ:

000-default.conf
default-ssl.conf
test.conf

ファイル000-default.conf

<VirtualHost localhost:80>
        ServerName localhost
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${Apache_LOG_DIR}/error.log
        CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>

ファイルtest.conf

<VirtualHost test:80>
        ServerAdmin test@localhost
        ServerName test
        NameVirtualHost test
        ServerAlias test
        DocumentRoot /var/www/test
        ErrorLog ${Apache_LOG_DIR}/error.log
        CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>
31
Simon

tl; dr:で呼び出しますSudoSudo service Apache2 reload


service Apache2 reloadの動作が私をだましたようです。次のログを参照してください。

user@Laptop:/etc/Apache2/sites-available$ Sudo a2ensite test.conf 
Enabling site test.
To activate the new configuration, you need to run:
  service Apache2 reload
user@Laptop:/etc/Apache2/sites-available$ service Apache2 reload
 * Reloading web server Apache2                                                  * 
user@Laptop:/etc/Apache2/sites-available$

http://testに到達してみてください:動作していません

user@Laptop:/etc/Apache2/sites-available$ Sudo service Apache2 reload
 * Reloading web server Apache2                                                  * 
user@Laptop:/etc/Apache2/sites-available$

http://testに到達してみてください:[〜#〜] working [〜#〜]

だから、違いを見つけてください!要点は、そもそも正しくリロードされると思ったということです。ログファイルにもエントリはありません。 Sudoで呼び出して助けた。これはバグですか?

43
Simon

この問題に直面していましたが、デフォルトの仮想ホストを無効にする必要がありました。

Sudo a2dissite 000-default.conf

考えられる拡張:

Apacheのドキュメントによると 仮想ホストのマッチングに関する詳細な議論

[...]この時点でメインサーバーにServerNameがない場合、代わりにhttpdが実行されているマシンのホスト名が使用されます。

つまり、デフォルトの仮想ホスト(通常000-default.conf)にServerNameが設定されていない場合-これはデフォルトです-Apacheはホスト名にフォールバックしますオペレーティング・システム。

その結果、マシンのホスト名と同じServerNameでユーザーが作成した別のvhostが構成されていても、Apacheはデフォルトのvhost(000-default.conf)から選択してサービスを提供します。

その理由は、Apacheがファイル名でアルファベット順にvhostをソートし、要求されたHTTP Hostヘッダーに一致する最初のvhost設定を選択するためです。したがって、000-default.confは、ユーザー定義のvhostsの前にチェックされます。通常、これらには000-というプレフィックスが付きません。

52
Eduardo Dennis

これを単に指摘するだけで、経験豊富なユーザーにとっては明らかかもしれませんが、初めてのタイマーの場合はそうではありません。

/sites-enabledで使用している設定が、.confで期待どおりApache2.confで終わっていることを確認してください

それが私の問題であり、それを修正しました。

6
Philll_t

すでに以下を試している場合:
1。ドキュメントルートおよび親フォルダーの権限を確認しました。
2。 a2dissite 000-defaultなど。
3。 SudoサービスApache2のリロードでApacheを再起動しました
そして、まだ機能していない場合は、以下を実行します。

1。デバッグロギングを有効にします。
vi /etc/Apache2/Apache2.conf
LogLevel debug

2。Apache2を再起動してログを監視
Sudo service Apache2 restart
tail -f /var/log/Apache2/*.log

。サーバーのIPが期待どおりにログに表示されているかどうかに注意してください:

==> /var/log/Apache2/other_vhosts_access.log <== ip-xxx-xx-xx-xx.eu-west-2.compute.internal:80 xx.78.xx.2xx--[13/Sep/2017:18:40:44 +0100] "GET/HTTP/1.1" 200 3509 "-" "Mozilla/5.0(X11; Ubuntu; Linux x86_64; rv:55.0)Gecko/20100101 Firefox/55.0"

Xxx.xx.xx.xx:80の代わりに典型的なIPアドレスに気付くでしょう
「ip-xxx-xx-xx-xx.eu-west-2.compute.internal:80」のようなFQDNがあります
AWS Elastic IPを使用して、Amazon EC2 Webサーバーの固定IPを作成しています。

4。virtual-hosts .confファイルの先頭を確認してください

<VirtualHost 127.0.0.1:80 11.22.33.44:80>
# Added from nessus to make more secure
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
ServerName mydomain.com
...

ここで確認できるのは、ポート80で127.0.0.1または11.22.33.44からのリクエストに対してこのvhostを提供するようにApacheに指示していることです。しかし、サーバーは奇妙なFQDNを取得するため、これらのIPを認識しません。ユーレカ!

解決策:
VirtualHostタグに*:80を追加して、次のようにします。

<VirtualHost 127.0.0.1:80 11.22.33.44:80 *:80>


Apacheを再起動します。これがお役に立てば幸いです。他の理由もあるかもしれませんが、これが問題の原因である場合は、くつろいでカップパティーを飲んでリラックスしましょう!そうでない場合は、解決策を見つけてください。

PS。デバッグするのではなく、警告するためにログを戻すことを忘れないでください!

4
Mark Zaretti

私はこれらのソリューションをすべて実行しましたが、どれも機能しませんでした。次に、戻ってApache2.confファイルを確認することにしました。 「sites-enabled」confファイルを含める行がデフォルトでコメント化されていることを発見しました。行のコメントを解除し、Apacheを再起動することで、問題が修正されました(ファイルの終わり近くにありました)。

# Include the virtual Host configurations:
IncludeOptional sites-enabled/*.conf 
2
Dave

*:80でデフォルトを維持する場合; * .443下部にあることを確認してください-000-defaultの名前をzzz-defaultに変更してください

1
user2628020

それも私を夢中にさせ、私は.confファイルを何度もチェックし、すべてが完全に正しく定義されました。私はこの投稿で最終的にa2ensiteとa2dissiteコマンドをsudoerとして試し、Apacheを再起動しましたが、デフォルトのApacheウェルカムページに着陸しましたが、Apacheはデフォルトのサイトを無効にしたり、新しい仮想ホストをオンボードしたことはありませんでした。

Sudoを使用せずにApacheを再起動しようとしていたことがわかりました...

service Apache2 restart

つかいます

Sudo service Apache2 restart
1
Arnaud Bouchot

Apache 2.4での私のケースでは、仮想ホスト構成に以下の設定を追加することで問題を解決しました。

Listen 80

そのため、設定は次のようになります。

Listen 80
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName testsite.com
    ServerAlias www.testsite.com
    DocumentRoot /var/www/testsite
    ErrorLog ${Apache_LOG_DIR}/error.log
    CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>
0
baltasvejas

これは何度も私をかみました。時々Sudoで有効にします-時には無効にします。

Ubuntu 14.04はどちらの方法でも同じメッセージを表示するようです。時速100マイルで移動する場合、Sudoまたは2つを見逃すことがあります。

新しいWebサイトがデフォルトで間違ったディレクトリに戻るという症状は、有効化が行われなかったことの唯一の手掛かりです。バグだと思います。

少なくともコマンドが実行されない場合は警告する必要があります!!!

0
WBing

デフォルトのhtmlファイル(/var/www/html/index.html)をサイトに置き換えるか、ファイルの名前をindex.html.bakなどに変更する必要があります。何らかの理由で、変更しない限り、Apacheはデフォルトでindex.htmlを使用します。

0
Rex Linder

私にとっては、Apacheを再起動した後、SudoサービスApache2リロードで動作し始めました。そして、http:/ testでctrl + F5を押します。

0
masteryoda

/ etc/hostsファイルで、接続しようとしたサイトと同じ完全修飾ドメイン名(FQDN)を使用すると、これが発生します。この問題を解決するには、FQDNをVirtualHost ServerNameの値以外の名前に変更する必要がありました。

つまり、私の/ etc/hostnameが次の場合:

Apple

そして、私の/ etc/hostsには次のものがありました。

192.168.54.34 Apple.example.com Apple

そして、私の/etc/Apache2/sites-enabled/Apple.example.com.confには次のものがありました。

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName Apple.example.com
    DocumentRoot /var/www/Apple.example.com
    DirectoryIndex index.html index.php
</VirtualHost>

Apple.example.comは、/ etc/hostsファイルにもリストされているため、000-default.confに受け入れられます。これを解決するために、サーバーのFQDNを/ etc/hostnameファイルで次のように変更しました。

server1

および/ etc/hostsファイル:

192.168.54.34 server1.example.com server1
0
kojow7