Nginx實現多虛擬主機配置

一、Nginx的應用概述

Nginx作爲一款高性能的http 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。主要有以下3方面的應用:

1、http服務器

Nginx是一個http服務可以獨立提供http服務。可以做網頁靜態服務器。

2、虛擬主機

可以實現在一臺服務器虛擬出多個網站。例如個人網站使用的虛擬主機。

3、反向代理,負載均衡

當網站的訪問量達到一定程度後,單臺服務器不能滿足用戶的請求時,需要用多臺服務器集羣可以使用nginx做反向代理。並且多臺服務器可以平均分擔負載,不會因爲某臺服務器負載高宕機而某臺服務器閒置的情況。 

二、什麼是虛擬主機
      虛擬主機使用的是特殊的軟硬件技術,它把一臺服務器主機分成一臺臺“虛擬”的主機,每臺虛擬主機都可以具有獨立的域名,具有完整的Intemet服務器功能(WWW、FTP、Email等),同一臺主機上的虛擬主機之間是完全獨立的。從網站訪問者來看,每一臺虛擬主機和一臺獨立的主機完全一樣。
       利用虛擬主機,不必爲每個要運行的網站提供一臺單獨的Nginx服務器或單獨運行一組Nginx進程。虛擬主機提供了在同一臺服務器、同一組Nginx進程上運行多個網站的功能。

可以實現在同一臺服務器上運行多個網站,並且網站之間相互獨立各不干擾。

三、Nginx基於IP的虛擬主機配置

1、在Linux系統中虛擬出兩個網卡,設置爲不同的IP地址

將/etc/sysconfig/network-scripts/ifcfg-eth0文件複製一份,命名爲ifcfg-eth0:1

cd /etc/sysconfig/network-scripts

cp ifcfg-eth0 ifcfg-eth0:1

修改其中內容:

DEVICE=eth0:1

IPADDR=192.168.72.49

其他項不用修改,然後執行service network restart 重啓網絡服務

修改nginx配置文件

在nginx/conf/nginx.conf是nginx核心配置文件,nginx對虛擬主機的配置,一個server就是一個虛擬主機。Nginx對於多虛擬主機的支持,主要是對server標籤的添加,指定location啓動路徑即可。

1)先將/nginx/html文件複製成兩份分別爲html-48,html-49,修改html/index.html文件,用於標記不同nginx首頁信息。

2)修改nginx.conf配置文件,添加兩個server節點,指定ip


server {
        listen       80;
        server_name  192.168.72.48;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html-48;
            index  index.html index.htm;
        }       
    }
 
server {
        listen       80;
        server_name  192.168.72.49;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html-49;
            index  index.html index.htm;
        }        
    }
3、reload nginx配置文件,命令:/nginx/bin/nginx -s reload
4、根據IP訪問首頁,效果圖

訪問192.168.72.48如下: 

訪問192.168.72.49,如下:

這就是實現了在同一臺硬件服務器上,虛擬出兩個IP地址,使用1個nginx服務器,分別對兩個ip進行訪問,分別跳轉到不同的html頁面。

四、Nginx基於端口的虛擬主機配置

1、同樣,複製兩個html文件,修改index首頁信息用於標記訪問的是那個虛擬機

2、修改nginx.conf的對應server-port屬性值

server {
        listen       81;
        server_name  192.168.72.49;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html-81;
            index  index.html index.htm;
        }       
    }
server {
        listen       82;
        server_name  192.168.72.49;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html-82;
            index  index.html index.htm;
        }        
    }
3、訪問192.168.72.49:8081 和192.168.72.49:8081 兩個端口,可分別跳轉到兩個不同的index頁面,效果圖同上。

這就使得通過1個服務器IP,虛擬出多個端口號發佈相同服務,瀏覽器根據輸入的某個端口號確定訪問對應端口發佈的服務。

五、Nginx基於域名的虛擬主機配置

Last but not least,基於域名的虛擬主機應用相對於前兩者是更常用,一般情況都是使用域名對網站進行訪問,很少有直接輸入該網站的服務器IP。nginx基於域名的虛擬主機配置

1、首先設置host文件,指定IP 對應的域名,使得原本需要通過DNS服務器去解析域名所對應的IP,而host文件相當於本地的一份ip-域名的對應數據緩存,如果host中有這個對應關係,那訪問網站時,則直接跳轉到指定IP,而不再從DNS服務器上解析。這裏可以藉助SwitchHosts工具修改如下。

192.168.72.49 www.max.com

192.168.72.49 xixi.max.com

2、修改nginx.conf配置

 server {
        listen       80;
        server_name  www.max.com;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html-max;
            index  index.html index.htm;
        }
     } 
 server {
        listen       80;
        server_name  xixi.max.com;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html-linxi;
            index  index.html index.htm;
        }
     } 
這裏通過修改server-name,nginx啓動會通過這個server-name域名到本地的host文件中找到對應的IP,訪問到該IP下指定的location文件地址。

訪問xixi.max.com

訪問www.max.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章