虛擬主機(jī),正如其名谤绳,就是將一臺(tái)服務(wù)器劃分為多個(gè)虛擬的主機(jī)占锯,可以將每個(gè)域名分配給不同的虛擬主機(jī),這樣可以充分利用了域名資源和硬件資源缩筛。這次我們采用 Nginx 實(shí)現(xiàn)虛擬主機(jī)的配置消略。
Nginx 是一款 free、開(kāi)源的高性能 HTTP 服務(wù)器和反向代理服務(wù)器瞎抛,同時(shí)可用作 IMAP艺演、POP3、SMTP 服務(wù)器,它經(jīng)常被用作 HTTP 服務(wù)器進(jìn)行 Web 應(yīng)用的部署使用胎撤,另外晓殊,Nginx 還經(jīng)常以反向代理服務(wù)器的身份實(shí)現(xiàn)負(fù)載均衡。
使用 Nginx 配置虛擬主機(jī)只需編輯 Nginx 安裝目錄下 conf/nginx.conf 即可伤提,增加一個(gè)虛擬主機(jī)只需要在配置文件中添加一個(gè) server 節(jié)點(diǎn)巫俺,就像這樣:
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
為監(jiān)聽(tīng)的端口,本例中監(jiān)聽(tīng) 80 端口
server_name
即指定的虛擬主機(jī)名
location
只 Nginx 代理的相對(duì) URL 范圍
index
指主頁(yè)的文件名
root
為網(wǎng)站根目錄在系統(tǒng)中的實(shí)際位置
location /
表示匹配這個(gè)主機(jī)名下的所有請(qǐng)求肿男,server_name
的值可以為 *.example.com
這種形式介汹,即匹配所有以 example.com
結(jié)尾的主機(jī)名,亦或 test.*
舶沛,即所有以 test
開(kāi)頭的主機(jī)名嘹承,還可以用正則表達(dá)式的形式,比如 ~^test\d+\.example\.com$
如庭,如果使用正則表達(dá)式叹卷,最前面要加上 ~
這個(gè)符號(hào)。
以上兩個(gè)虛擬主機(jī)實(shí)現(xiàn)了將對(duì)不同主機(jī)名的請(qǐng)求指向不同的物理目錄坪它,下面介紹如何用虛擬主機(jī)實(shí)現(xiàn)區(qū)分端口骤竹,即將不同主機(jī)名的請(qǐng)求分發(fā)到不同端口上
和上面的配置寫(xiě)法類(lèi)似:
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 表示將請(qǐng)求轉(zhuǎn)發(fā)到某個(gè) URL,這樣便可以實(shí)現(xiàn)虛擬主機(jī)名和端口的映射了。如果采用一臺(tái)物理機(jī)部署多個(gè) Tocmat 服務(wù)實(shí)例則可以采用這種方式,這樣就避免了暴露多個(gè)端口的問(wèn)題帅霜。
個(gè)人博客同步更新稍算,獲取更多技術(shù)分享請(qǐng)關(guān)注:鄭保樂(lè)的博客