Apache-2.4
Apache 中的 VirtualHost 為瀏覽器提供了錯誤的頁面(但不是 curl)
我嘗試使用不同的虛擬主機在同一 Apache 伺服器(在 Ubuntu 16.04 上執行的 Apache 2.4)上託管不同的網站。但是,當嘗試打開
domain-two.tld
伺服器時,會傳遞domain-one.tld
. 這個和那個問題中描述了類似的行為。根據我的配置文件,這兩個問題的答案應該已經實現了。虛擬主機定義如下:
<VirtualHost *:80> ServerName domain-one.tld ServerAlias www.domain-one.tld DocumentRoot /var/www/html/domain_one </VirtualHost>
和
<VirtualHost *:80> ServerName domain-two.tld ServerAlias www.domain-two.tld DocumentRoot /var/www/html/domain_two </VirtualHost>
兩個配置文件都位於
sites-available
並sites-enabled
通過使用a2ensite
指向以下目錄樹的符號連結到:sites-enabled/ |-- domain_one.conf -> ../sites-available/domain_one.conf `-- domain_two.conf -> ../sites-available/domain_two.conf
啟用配置文件後,我重新啟動了 apache,以便通過
systemctl restart apache2
. 為了測試這兩種配置,我在/etc/hosts
文件中添加了一些額外的主機127.0.0.1 localhost 127.0.0.1 domain-one.tld 127.0.0.1 www.domain-one.tld 127.0.0.1 domain-two.tld 127.0.0.1 www.domain-two.tld # some further IPs down here
並使用 curl 在本地訪問了這兩個網站。
這將根據需要返回正確的文件。但是,通過瀏覽器從遠端客戶端訪問這兩個站點 Apache 僅提供(由於技術原因
domain_one
無法測試,記憶體在瀏覽器中已停用)。domain-two.tld
這種奇怪的行為從何而來?我怎麼能縮小這個範圍?
由於@kubanczyk 的評論而更新:
- 問題:針對遠端
curl
請求而不是本地curl
請求返回什麼localhost
?- 答:正確的頁面內容。
對於pvz-sphere.de這是
domain_one
:$ curl -v http://www.pvz-sphere.de # which is domain_one * Rebuilt URL to: http://www.pvz-sphere.de/ * Trying 217.160.122.225... * TCP_NODELAY set * Connected to www.pvz-sphere.de (217.160.122.225) port 80 (#0) > GET / HTTP/1.1 > Host: www.pvz-sphere.de > User-Agent: curl/7.60.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Type: text/html < Content-Length: 905 < Connection: keep-alive < Keep-Alive: timeout=15 < Date: Wed, 06 Jun 2018 15:45:32 GMT < Server: Apache < <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html> <head> <title>SPhERe - Symposium on Pharmaceutical Engineering Research</title> <meta name="keywords" content="SPhERe, ICTV, TU Braunschweig, PVZ, Zentrum für Pharmaverfahrenstechnik, Institut für Chemische und Thermische Verfahrenstechnik" /> <meta name="description" content="Symposium on Pharmaceutical Engineering Research" /> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> </head> <frameset rows="100%"> <frame src="http://ictv.rz.tu-bs.de/SPhERe/" title="SPhERe - Symposium on Pharmaceutical Engineering Research" frameborder="0" noresize="noresize"/> <noframes> <body> <h1>SPhERe - Symposium on Pharmaceutical Engineering Research</h1> <p><a href="http://ictv.rz.tu-bs.de/SPhERe/">http://pvz-sphere.de/</a></p> </body> </noframes> </frameset> </html> * Connection #0 to host www.pvz-sphere.de left intact
對於teresa-projekt.de這是
domain_two
:$ curl -v http://www.teresa-projekt.de # which is domain_two * Rebuilt URL to: http://www.teresa-projekt.de/ * Trying 217.160.233.207... * TCP_NODELAY set * Connected to www.teresa-projekt.de (217.160.233.207) port 80 (#0) > GET / HTTP/1.1 > Host: www.teresa-projekt.de > User-Agent: curl/7.60.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Type: text/html < Transfer-Encoding: chunked < Connection: keep-alive < Keep-Alive: timeout=15 < Date: Wed, 06 Jun 2018 15:38:17 GMT < Server: Apache < <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html> <head> <title>Teresa-Projekt</title> <meta name="keywords" content="" /> <meta name="description" content="" /> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> </head> <frameset rows="100%"> <frame src="http://ictv.rz.tu-bs.de" title="Teresa-Projekt" frameborder="0" noresize="noresize"/> <noframes> <body> <h1>Teresa-Projekt</h1> <p><a href="http://ictv.rz.tu-bs.de">http://teresa-projekt.de/</a></p> </body> </noframes> </frameset> </html> * Connection #0 to host www.teresa-projekt.de left intact
在查看請求和響應標頭以及不同的日誌文件(啟用取證日誌之後)後,我發現域重定向(類型
iframe redirection
而不是HTTP redirect
)和 DNS 條目都有問題。那些錯誤的 DNS 條目和重定向使 Apache 提供預設值VirtualHost
,因為沒有給定ServerNames
或ServerAlias
匹配請求的域。