同一網域中的兩個 Web 應用程式

同一網域中的兩個 Web 應用程式

我在我的專用 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 上的所有請求;他們中只有一個人能夠獲勝。問題就在於此。

相關內容