自宅のIPアドレスにリンクされているドメイン名があります。ただし、同じサーバー/ IPを使用して複数のWebサイトを表示したいと思います。
ただし、仮想ホストを機能させることはできません。
私のconf.d/virtual.confは次のとおりです。
NameVirtualHost 192.168.10.151:80
私のsites-available/www.mydomain.comは:
Listen 80
<VirtualHost *>
ServerAdmin [email protected]
ServerName www.mydomain.com
ServerAlias mydomain.com
#Indexes and Directory Root
DirectoryIndex index.html index.php
DocumentRoot /media/BigDisk/www/www.mydomain.com/
# Log Files
ErrorLog /media/BigDisk/www/www.mydomain.com/logs/error.log
CustomLog /media/BigDisk/www/www.mydomain.com/logs/access.log combined
</VirtualHost>
そして、サイトはa2ensiteを使用して有効にされ、Apacheは警告やエラーなしでリロードされましたが、www.mydomain.com
に移動しても何も表示されません( "Opps!Google Chrome接続できませんでした...」)。
私は何が間違っているのですか?
更新:Apacheを再起動すると、次のようになります。
malfist@webhost:~$ Sudo /etc/init.d/Apache2 restart
[Sudo] password for malfist:
* Restarting web server Apache2 Apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost 192.168.10.151:80 has no VirtualHosts
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
Apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost 192.168.10.151:80 has no VirtualHosts
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
まず、nslookup
またはDig
またはHost
を使用して、www.mydomain.comがルーターの静的外部IPアドレスを指していることを確認します。
次に、ルーターのポート転送が外部インターフェースのポート80に到着するリクエストがサーバーのプライベートIPアドレスのポート80に転送されるように構成されていることを確認します。
次に、ISPの利用規約でHTTPサービスの実行が許可されていることを確認します。一部のISPは、インバウンドHTTP接続をブロックします。
最後に、LAN内からこれをテストする場合、www.mydomain.comに別のIPアドレスが必要な場合は、192.168.10.151 www.mydomain.com
をホストファイルに追加できます(例:/etc/hosts
またはC:\WINDOWS\system32\drivers\etc\hosts
)。 Malfistがコメントで指摘したように、ルーターがNATリフレクションをサポートしている場合、これは必要ありません。
更新:
「接続できませんでした」は、Apache vhost構成の問題ではなく、基本的なIP接続の問題を示唆しています。後者は、404または500のHTTP応答をもたらす可能性が高くなります。要求がApacheに到達した場合、エラーログにエントリが表示されます。そこにエントリがない場合は、Apacheがリクエストを受信していないことを示しています。
よくある設定ミス を参照してください
複数のNameVirtualHost行により、「NameVirtualHost *:80 has VirtualHosts」という警告が表示されます。ただし、Apacheは2番目のディレクティブを無視し、最初に定義されたNameVirtualHost行を使用します。これは、複数の仮想ホスト構成ファイルを使用していて、特定のNameVirtualHost行を1回だけ定義する必要があることを理解していない場合に発生するようです。上記のように、これは特にアップグレード後にdebianports.confファイルで発生する可能性があります。
他のいくつかのプログラムはすでにポート80でリッスンしています。netstat -anp
を使用して何を見つけ、それを停止します。
Apacheサーバーでネットワークスニファ(tcpdumpやwiresharkなど)を使用して、どの着信HTTPリクエストが到着しているかを確認します。到着していない場合は、IP接続の問題であることがわかります。
アップデート2:
別の優れた診断ツールは、サーバーでこれを実行することです
wget --header="Host: www.mydomain.com" -O - http://localhost
これはあなたが見るべき出力の一種です
[root @ mybox logs] #wget --header = "Host:foo.bar" -O-http:// localhost -2011-09-0118:56:08- --http:// localhost / ローカルホストを解決しています... 127.0.0.1 ローカルホストに接続しています| 127.0.0.1 |:80 ...接続されています。 HTTPリクエストが送信され、待機しています応答... 200 OK 長さ:125 [text/html] 保存先: `STDOUT ' 0%[] 0 --.- K/s <html> <head> <title> mybox </ title> </ head> <body> <h1 > mybox </ h1> <p>見るものはありません。移動してください</ p> </ body> </ html> 100%[ ======================================>] 125 --.- K/s in 0s 2011-09-01 18:56:08(10.8 MB/s)-`-'保存[125/125] [root @ mybox logs] #tail -n 1 access_log 127.0.0.1 --- [01/Sep/2011:18:56:08 +0100] "GET/HTTP/1.0" 200125 "-" "Wget /1.11。 4 RedHatが変更されました "
サーバーの応答ヘッダーを表示するには、-S
オプションをwget
に追加します。
「接続が拒否されました」などのメッセージが表示された場合、Apacheはポート80をリッスンしていません。
netstat -anp
からの出力には、
tcp 0 0 :::80 :::* LISTEN 12345/httpd
私はこれに何時間も費やしました、そして私がする必要があるのは私のIPアドレスifconfigeth0を解放することだけです。静的になり、仮想ホスト名を認識します。
NameVirtualHost *:80
これは/etc/Apache2/ports.conf
にあります。削除するか、コメントアウトしてApacheを再起動すると、警告が消えます。