虛擬主機,正如其名,就是將一臺服務器劃分爲多個虛擬的主機,可以將每個域名分配給不同的虛擬主機,這樣可以充分利用了域名資源和硬件資源。這次我們採用 Nginx 實現虛擬主機的配置。
Nginx 是一款 free、開源的高性能 HTTP 服務器和反向代理服務器,同時可用作 IMAP、POP3、SMTP 服務器,它經常被用作 HTTP 服務器進行 Web 應用的部署使用,另外,Nginx 還經常以反向代理服務器的身份實現負載均衡。
使用 Nginx 配置虛擬主機只需編輯 Nginx 安裝目錄下 conf/nginx.conf 即可,增加一個虛擬主機只需要在配置文件中添加一個 server 節點,就像這樣:
server {
listen 80;
server_name test1.example.com;
location / {
index index.html;
root /home/www/test1/;
}
}
server {
listen 80;
server_name test2.example.com;
location / {
index index.html;
root /home/www/test2/;
}
}
listen
爲監聽的端口,本例中監聽 80 端口
server_name
即指定的虛擬主機名
location
只 Nginx 代理的相對 URL 範圍
index
指主頁的文件名
root
爲網站根目錄在系統中的實際位置
location /
表示匹配這個主機名下的所有請求,server_name
的值可以爲 *.example.com
這種形式,即匹配所有以 example.com
結尾的主機名,亦或 test.*
,即所有以 test
開頭的主機名,還可以用正則表達式的形式,比如 ~^test\d+\.example\.com$
,如果使用正則表達式,最前面要加上 ~
這個符號。
以上兩個虛擬主機實現了將對不同主機名的請求指向不同的物理目錄,下面介紹如何用虛擬主機實現區分端口,即將不同主機名的請求分發到不同端口上
和上面的配置寫法類似:
server {
listen 80;
server_name demo1.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
server {
listen 80;
server_name demo2.example.com;
location / {
proxy_pass http://127.0.0.1:8081;
}
}
proxy_pass 表示將請求轉發到某個 URL,這樣便可以實現虛擬主機名和端口的映射了。如果採用一臺物理機部署多個 Tocmat 服務實例則可以採用這種方式,這樣就避免了暴露多個端口的問題。
個人博客同步更新,獲取更多技術分享請關注:鄭保樂的博客