1. 程式人生 > >Nginx虛擬主機

Nginx虛擬主機

Nginx

虛擬主機定義:

虛擬主機指的是在單一機器上運行多個網站
虛擬主機可以是基於IP的,即每個IP一個站點;或者是基於域名的,即每個域名一個站點
這些站點在同一物理服務器上,對用戶不會有任何的感知

Nginx也可以配置多種類型的虛擬主機:

1.基於IP的虛擬主機
2.基於端口的虛擬主機
3.基於域名的虛擬主機

下面將分別介紹這些虛擬主機的配置,及優缺點

基於IP的虛擬主機

可以在一塊物理網卡上綁定多個IP地址,這是實現基於IP虛擬主機的前提
缺點:
配置復雜,不但要關註Nginx本身的配置,同時也要關註網卡的特殊配置
訪問的時候需要使用IP地址:端口(默認80不需要寫)去訪問,實際上也很復雜

基於端口的虛擬主機

使用端口來區分,瀏覽器使用域名或IP地址:端口號訪問

實例配置:

server {
   listen 8080;
     server_name www.maiyap.com;
     root /data/wwwhtml/www.maiyap.com;
}
server{
   listen 9090;
     server_name www.maiyalog.com;
     root /data/wwwhtml/www.maiyalog.com;
}

缺點:
虛擬主機使用端口去做區分,導致HTTP協議不標準(標準的HTTP協議為80端口),有可能導致端口沖突,影響Nginx正常運行
業務調用必須要知道業務開啟的端口,端口一旦發生改變調用方和被調用方都與要進行調整

基於域名的虛擬主機是最常見的一種虛擬主機

只需要配置DNS服務器,將每個主機名映射到正確的IP地址,然後配置Nginx服務器,令其識別不同的主機名就可以了
這種虛擬技術使用多虛擬主機可以共享同一個IP地址,有效的解決了IP地址不足的問題
實例配置:

server {
   listen 80;
     server_name www.maiyap.com;
     root /data/wwwhtml/www.maiyap.com;
}
server{
   listen 80;
     server_name www.maiyalog.com;
     root /data/wwwhtml/www.maiyalog.com;
}

優點:
所有虛擬主機使用用一個端口,彌補了基於端口虛擬主機的缺陷
所有虛擬主機使用同一個IP地址,彌補了基於IP虛擬主機的缺陷

默認虛擬主機
默認虛擬主機就是配置文件裏的第一個虛擬主機.就是如果解析到這臺機器的域名,不管是什麽域名,只要配置文件中沒有配置,就會訪問到默認主機上
在Nginx中若不指定默認虛擬主機,同樣配置文件中的第一個虛擬主機將會是默認虛擬主機.
實例配置:

server{
         listen 80 default_server;  #說明是默認虛擬主機
                 server_name _;               #虛擬主機沒有域名,為空
                 root   /data/wwwhml/default;
                 access_log /data/wwwhtml/logs/default-access_log main;
         error_log /data/wwwhtml/logs/default-error_log;
               rewrite ^/(.*) http://maiyap.com/$1 permanent;         #將所有的未知請求,都導流到maiyap.com服務上
}

Nginx虛擬主機