什麼是虛擬主機?
虛擬主機就是使用特殊的軟硬件技術,把一臺計算機主機分成多臺“虛擬”的主機,每一臺虛擬主機都具有獨立的域名和IP地址(或共享的IP地址),具有完整的Internet服務器功能。在同一臺硬件、同一個操作系統上,運行着爲多個用戶打開的不同的服務器程序,互不干擾;而各個用戶擁有自己的一部分系統資源(IP地址、文件存儲空間、內存、CPU時間等)。 其實說白了就是有一套大房子,然後給這個房子加上隔斷,分成幾個小屋,然後每個小屋都租賃給一個商戶,每個商戶之間都是相互不受影響的,相互獨立的。
Nginx實現虛擬主機的三種方式
在說三種方式之前,簡單的介紹下nginx.conf裏面的配置的詳情。
Nginx配置段
// 全局區 worker_processes 1; // 有1個工作的子進程,可以自行修改,但太大無益,因爲要爭奪CPU,一般設置爲 CPU數*核數 Event { // 一般是配置nginx連接的特性 // 如1個worker能同時允許多少連接 worker_connections 1024; // 這是指 一個子進程最大允許連1024個連接 } http { //這是配置http服務器的主要段 Server1 { // 這是虛擬主機段 Location { //定位,把特殊的路徑或文件再次定位 ,如image目錄單獨處理 } /// 如.php單獨處理 } Server2 { } }
基於域名
需要修改下hosts文件,加上IP和域名的對應關係,要不然是訪問不到的。
vim /etc/hosts 192.168.22.33 www.lingzai.com 192.168.22.33 www.xiaowang.com
server { listen 80; server_name www.lingzai.com; localtion /{ root html-ling; index index.html; } server { listen 80; server_name www.xiaowang.com; location /{ root html-wang; index index.html; }
然後訪問相應的域名www.xiaowang.com
或者www.lingzai.com
就會出現相應的index界面。
基於IP
給每一個server配置一個IP,直接訪問不同的IP就會訪問不同的虛擬主機。
server{ listen 80; server_name 59.46.80.12; location /{ root html-wang; index index.html; } } server{ listen 80; server_name 59.46.80.11; location /{ root html-ling; index index.html; } }
注意:配置完成後,需要reload配置纔會生效:
reload nginx配置文件,命令:/nginx/bin/nginx -s reload
基於端口
當輸入不同的端口號的時候,進入不同的虛擬主機。配置如下:
server{ listen 2022; server_name 192.168.22.33; location /{ root html-wang; index index.html; } } server{ listen 2033; server_name 192.168.22.33; location /{ root html-ling; index index.html; } }
在瀏覽器中輸入192.168.22.33:2033或者2022就會進入不同的虛擬主機。
通過以上任意一種方式你就可以在一臺服務器上發佈多個網站,網站之間的運行互相獨立不受影響。