如何使用 Apache Web 伺服器配置多個站點
如何在流行而強大的 Apache Web 伺服器上託管兩個或多個站點。
在我的上一篇文章中,我解釋瞭如何為單個站點配置 Apache Web 伺服器,事實證明這很容易。在這篇文章中,我將向你展示如何使用單個 Apache 例項來服務多個站點。
注意:我寫這篇文章的環境是 Fedora 27 虛擬機器,配置了 Apache 2.4.29。如果你用另一個發行版或不同的 Fedora 版本,那麼你使用的命令以及配置檔案的位置和內容可能會有所不同。
正如我之前的文章中提到的,Apache 的所有配置檔案都位於 /etc/httpd/conf
和 /etc/httpd/conf.d
。預設情況下,站點的資料位於 /var/www
中。對於多個站點,你需要提供多個位置,每個位置對應託管的站點。
基於名稱的虛擬主機
使用基於名稱的虛擬主機,你可以為多個站點使用一個 IP 地址。現代 Web 伺服器,包括 Apache,使用指定 URL 的 hostname
部分來確定哪個虛擬 Web 主機響應頁面請求。這僅僅需要比一個站點更多的配置。
即使你只從單個站點開始,我也建議你將其設定為虛擬主機,這樣可以在以後更輕鬆地新增更多站點。在本文中,我將從上一篇文章中我們停止的地方開始,因此你需要設定原來的站點,即基於名稱的虛擬站點。
準備原來的站點
在設定第二個站點之前,你需要為現有網站提供基於名稱的虛擬主機。如果你現在沒有站點,請返回並立即建立一個。
一旦你有了站點,將以下內容新增到 /etc/httpd/conf/httpd.conf
配置檔案的底部(新增此內容是你需要對 httpd.conf
檔案進行的唯一更改):
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html
ServerName www.site1.org
</VirtualHost>
這將是第一個虛擬主機配置節,它應該保持為第一個,以使其成為預設定義。這意味著通過 IP 地址或解析為此 IP 地址但沒有特定命名主機配置節的其它名稱對伺服器的 HTTP 訪問將定向到此虛擬主機。所有其它虛擬主機配置節都應跟在此節之後。
你還需要使用 /etc/hosts
中的條目設定你的網站以提供名稱解析。上次,我們只使用了 localhost
的 IP 地址。通常,這可以使用你使用的任何名稱服務來完成,例如 Google 或 Godaddy。對於你的測試網站,通過在 /etc/hosts
中的 localhost
行新增一個新名稱來完成此操作。新增兩個網站的條目,方便你以後不需再次編輯此檔案。結果如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 www.site1.org www.site2.org
讓我們將 /var/www/html/index.html
檔案改變得更加明顯一點。它應該看起來像這樣(帶有一些額外的文字來識別這是站點 1):
<h1>Hello World</h1>
Web site 1.
重新啟動 HTTPD 伺服器,已啟用對 httpd
配置的更改。然後,你可以從命令列使用 Lynx 文字模式檢視網站。
[root@testvm1 ~]# systemctl restart httpd
[root@testvm1 ~]# lynx www.site1.org
Hello World
Web site 1.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
你可以看到原始網站的修改內容,沒有明顯的錯誤,先按下 Q
鍵,然後按 Y
退出 Lynx Web 瀏覽器。
配置第二個站點
現在你已經準備好建立第二個網站。使用以下命令建立新的網站目錄結構:
[root@testvm1 html]# mkdir -p /var/www/html2
注意,第二個站點只是第二個 html
目錄,與第一個站點位於同一 /var/www
目錄下。
現在建立一個新的索引檔案 /var/www/html2/index.html
,其中包含以下內容(此索引檔案稍有不同,以區別於原來的網站):
<h1>Hello World -- Again</h1>
Web site 2.
在 httpd.conf
中為第二個站點建立一個新的配置節,並將其放在上一個虛擬主機配置節下面(這兩個應該看起來非常相似)。此節告訴 Web 伺服器在哪裡可以找到第二個站點的 HTML 檔案。
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html2
ServerName www.site2.org
</VirtualHost>
重啟 HTTPD,並使用 Lynx 來檢視結果。
[root@testvm1 httpd]# systemctl restart httpd
[root@testvm1 httpd]# lynx www.site2.org
Hello World -- Again
Web site 2.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
在這裡,我壓縮了輸出結果以適應這個空間。頁面的差異表明這是第二個站點。要同時顯示兩個站點,請開啟另一個終端會話並使用 Lynx Web 瀏覽器檢視另一個站點。
其他考慮
這個簡單的例子展示瞭如何使用 Apache HTTPD 伺服器的單個例項來服務於兩個站點。當考慮其他因素時,配置虛擬主機會變得有點複雜。
例如,你可能希望為這些網站中的一個或全部使用一些 CGI 指令碼。為此,你可能為 CGI 程式在 /var/www
目錄下建立一些目錄:/var/www/cgi-bin
和 /var/www/cgi-bin2
,以與 HTML 目錄命名一致。然後,你需要將配置指令新增到虛擬主機節,以指定 CGI 指令碼的目錄位置。每個站點可以有下載檔案的目錄。這還需要相應虛擬主機節中的條目。
Apache 網站描述了管理多個站點的其他方法,以及從效能調優到安全性的配置選項。
Apache 是一個強大的 Web 伺服器,可以用來管理從簡單到高度複雜的網站。儘管其總體市場份額在縮小,但它仍然是網際網路上最常用的 HTTPD 伺服器。
via: https://opensource.com/article/18/3/configuring-multiple-web-sites-apache
作者:David Both 譯者:MjSeven 校對:wxy
相關文章
- apache一個IP多個站點的配置方法Apache
- 如何配置 Apache Web 伺服器ApacheWeb伺服器
- Apache配置多個網站的方法Apache網站
- apache中配置多個IP對應多個網站Apache網站
- nginx伺服器下配置多個站點的方法Nginx伺服器
- Apache搭建多個站點方法詳解Apache
- 在一臺Apache伺服器上建立多個站點(不同域名)Apache伺服器
- 利用Apache的VirtualHost在本地搭建多個站點Apache
- apache 如何避免SSL配置影響原來HTTP的站點配置ApacheHTTP
- nginx多站點配置Nginx
- CentOS7 Apache+Mono Web站點部署CentOSApacheMonoWeb
- Apache配置多個專案公用80埠Apache
- 如何配置https站點HTTP
- CA證書伺服器(6)利用CA證書配置安全Web站點伺服器Web
- Nginx 站點配置多目錄管理Nginx
- Docker 中使用 Nginx 代理多個應用站點DockerNginx
- 伺服器多站點多域名HTTPS實現伺服器HTTP
- 華納雲:在Apache伺服器中怎麼搭建web網站?Apache伺服器Web網站
- apache代理伺服器配置Apache伺服器
- macOS配置Apache伺服器MacApache伺服器
- 詳解Nginx如何配置Web伺服器NginxWeb伺服器
- Homestead 站點如何配置 httpsHTTP
- jboss3.26 多域名對同一個伺服器的配置,如何配置?S3伺服器
- Web 2.0網站的九個特點Web網站
- apache伺服器多埠支援Apache伺服器
- 站點資訊配置-使用資料庫資料庫
- 使用 Web 標準生成 ASP.NET 2.0 Web 站點WebASP.NET
- Mac下配置Apache伺服器MacApache伺服器
- 如何選擇Web伺服器硬體配置?Web伺服器
- ArcGIS Server 建立站點的時候出錯。配置儲存位置中包含有其他站點正在使用的伺服器配置檔案。Server伺服器
- Apache Vs Nginx哪個最適合您的 Web 伺服器?ApacheNginxWeb伺服器
- 使用apache CXF開發第一個Web服務ApacheWeb
- 如何在多臺 Web 伺服器上共享 sessionWeb伺服器Session
- 在WebLogic伺服器下 使用Apache Web 服務外掛Web伺服器Apache
- 如何配置web伺服器的詳細步驟Web伺服器
- 用phpStudy配置apache伺服器PHPApache伺服器
- C++Builder使用ADSI建立web站點 (轉)C++UIWeb
- ubuntu14.04 lnmp nginx 虛擬主機(多站點 多域名) 配置UbuntuLNMPNginx