我在我的專用 Debian 6 上安裝了 2 個不同的 Web 應用程式。
example.example.com/cast
`
我安裝了第二個,稱為Airtime。嘗試
example.example.com/cast
它通往通話時間。如果我去
example.example.com
它也通往那裡..
這是airtime-vhost 檔案中的條目
<VirtualHost *:80>
ServerName example.example.com
#ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot /usr/share/airtime/public
DirectoryIndex index.php
SetEnv APPLICATION_ENV "production"
<Directory /usr/share/airtime/public>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
關於如何為它們提供唯一的網址有什麼想法嗎?
答案1
聽起來 Airtime 附帶了自己的網頁伺服器,但「cast」(無論是什麼)卻沒有。
無論如何,一般問題可以透過多種方式處理:
如果可能的話,您可以在同一 Web 伺服器中執行這兩個應用程式。只有當其中一個應用程式依賴與其他應用程式不相容的特定版本的 Web 伺服器(假設 Apache 基於 Airtime 設定檔)時,這種情況才不可能實現。但是,如果您可以將所有必需的Apache 模組加載到單個Apache 實例中,足以運行兩個應用程序,那麼是的,您只需將每個應用程式放在文檔根目錄中的單獨路徑中,例如/ var/www/airtime和 /var/www/cast ,它就會「正常工作」。或者,您可以透過模擬連結到 /var/www 或 Apache 設定指令,將檔案系統中的任何目錄對應到文件根目錄。
您可以運行兩個不同的 Web 伺服器,但在不同的連接埠上執行它們。這會將 URL 變更為至少一個實例,以在網域後需要連接埠號,例如,
http://example.com:8080/blah
其中:8080
是連接埠(我建議選擇一個大於 1024 但小於 65000 的值,並在使用它之前透過 google 搜尋該數字來確保它不是您已經運行的服務的眾所周知的連接埠)。您可以運行兩個不同的 Web 伺服器,但在不同的 IP 位址上執行它們。您可以透過這種方式將連接埠預設為 80(或 443
https
),但您需要兩個不同的 IP。您可以執行兩個不同的 Web 伺服器,但在相同的 IP 位址但不同的子網域上執行它們。然後,您可以使用 URL 重寫自動將請求對應到
http://airtime.example.com
播放時間應用程式以及從http://cast.example.com
廣播應用程式對應請求。對於上述所有內容,如果配置足夠強大,您甚至可以在一台 Web 伺服器中完成此操作 - 並且 Apache Web 伺服器足夠強大,可以在一個 Web 伺服器實例中完成上述所有操作,儘管您還需要更多一些選項的奇異配置設定。請注意,我強烈建議嘗試在一個 Web 伺服器實例中執行所有這些第一的,因為這種方式更靈活且更易於管理,而且您可能可以配置它而不必擔心連接埠或 IP 位址,這會使前一種情況下的使用者和後一種情況下的您的情況變得複雜。
通話時間配置的問題在於它試圖成為虛擬主機,*:80
這意味著連接埠 80 上對伺服器的每個請求都將映射到通話時間的文檔根目錄中,即/usr/share/airtime/public
。您需要在同一台虛擬主機中取得cast
應用程式和airtime
應用程序,否則,將通話時間的虛擬主機限制為*:80
類似的值airtime.example.com:80
,以便只有對該子網域的請求才會傳遞到通話時間。
Debian 內建的 Apache 配置位於/etc/apache2/
目錄中,所以去那裡查看apache.conf
.請注意,它還有一個<VirtualHost *:80>
指令。嗯,你不能有兩個虛擬主機聲稱可以處理連接埠 80 上的所有請求;他們中只有一個人能夠獲勝。問題就在於此。