デフォルトの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>
tl; dr:で呼び出しますSudo:Sudo 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
で呼び出して助けた。これはバグですか?
この問題に直面していましたが、デフォルトの仮想ホストを無効にする必要がありました。
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-
というプレフィックスが付きません。
これを単に指摘するだけで、経験豊富なユーザーにとっては明らかかもしれませんが、初めてのタイマーの場合はそうではありません。
/sites-enabled
で使用している設定が、.conf
で期待どおりApache2.conf
で終わっていることを確認してください
それが私の問題であり、それを修正しました。
すでに以下を試している場合:
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。デバッグするのではなく、警告するためにログを戻すことを忘れないでください!
私はこれらのソリューションをすべて実行しましたが、どれも機能しませんでした。次に、戻ってApache2.confファイルを確認することにしました。 「sites-enabled」confファイルを含める行がデフォルトでコメント化されていることを発見しました。行のコメントを解除し、Apacheを再起動することで、問題が修正されました(ファイルの終わり近くにありました)。
# Include the virtual Host configurations:
IncludeOptional sites-enabled/*.conf
*:80でデフォルトを維持する場合; * .443下部にあることを確認してください-000-defaultの名前をzzz-defaultに変更してください
それも私を夢中にさせ、私は.confファイルを何度もチェックし、すべてが完全に正しく定義されました。私はこの投稿で最終的にa2ensiteとa2dissiteコマンドをsudoerとして試し、Apacheを再起動しましたが、デフォルトのApacheウェルカムページに着陸しましたが、Apacheはデフォルトのサイトを無効にしたり、新しい仮想ホストをオンボードしたことはありませんでした。
Sudoを使用せずにApacheを再起動しようとしていたことがわかりました...
service Apache2 restart
つかいます
Sudo service Apache2 restart
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>
これは何度も私をかみました。時々Sudo
で有効にします-時には無効にします。
Ubuntu 14.04はどちらの方法でも同じメッセージを表示するようです。時速100マイルで移動する場合、Sudo
または2つを見逃すことがあります。
新しいWebサイトがデフォルトで間違ったディレクトリに戻るという症状は、有効化が行われなかったことの唯一の手掛かりです。バグだと思います。
少なくともコマンドが実行されない場合は警告する必要があります!!!
デフォルトのhtmlファイル(/var/www/html/index.html
)をサイトに置き換えるか、ファイルの名前をindex.html.bak
などに変更する必要があります。何らかの理由で、変更しない限り、Apacheはデフォルトでindex.htmlを使用します。
私にとっては、Apacheを再起動した後、SudoサービスApache2リロードで動作し始めました。そして、http:/ testでctrl + F5を押します。
/ 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