虛擬主機,正如其名,就是將一臺服務器劃分爲多個虛擬的主機,能夠將每一個域名分配給不一樣的虛擬主機,這樣能夠充分利用了域名資源和硬件資源。此次咱們採用 Nginx 實現虛擬主機的配置。html
Nginx 是一款 free、開源的高性能 HTTP 服務器和反向代理服務器,同時可用做 IMAP、POP三、SMTP 服務器,它常常被用做 HTTP 服務器進行 Web 應用的部署使用,另外,Nginx 還常常以反向代理服務器的身份實現負載均衡。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
爲網站根目錄在系統中的實際位置bash
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 服務實例則能夠採用這種方式,這樣就避免了暴露多個端口的問題。網站
我的博客同步更新,獲取更多技術分享請關注:鄭保樂的博客ui