1. 程式人生 > 實用技巧 >Nginx多虛擬主機配置

Nginx多虛擬主機配置

一、Nginx的應用概述

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

1、http伺服器

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

2、虛擬主機

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

3、反向代理,負載均衡

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

本文主要講下實現多虛擬主機的配置,應該如何做

二、什麼是虛擬主機


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

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

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

1、如果是多網絡卡就可以直接使用不同的IP地址,如果是單網絡卡則再系統中虛擬出兩個網絡卡,設定為不同的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.56.127

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

  此時我們就有兩個IP地址:

IP1=192.168.56.126

IP2=192.168.56.127

2,修改nginx配置檔案

在nginx/conf/nginx.conf是nginx核心配置檔案,nginx對虛擬主機的配置,一個server就是一個虛擬主機。Nginx對於多虛擬主機的支援,主要是對server標籤的新增,指定location啟動路徑即可。

1)先將/nginx/html檔案複製成兩份,修改html/index.html檔案,用於標記不同nginx首頁資訊。

2)修改nginx.conf配置檔案,新增兩個server節點,指定ip

worker_processes  4;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
 
http {
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       192.168.56.126:80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html ;
        }
    }
    server {
        listen       192.168.56.127:80;
        server_name  localhost;
        location / {
            root   test;
            index  index.html ;
        }
  }
}


完成後重新載入配置

nginx -s reload

後面將結果貼上

四、基於不同埠的虛擬主機配置

在nginx conf 的配置目錄下新增,port2.conf ,然後在nginx.conf 裡面 include port2.conf

worker_processes  4;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
 
 
http {
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include  port2.conf;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

port2.conf

server {
    listen       81;
    server_name  localhost;
    location / {
        root   test;
        index  index.html ;
    }
}

完成之後重新載入配置:

nginx -s reload


後面將結果貼上

五:基於不同域名的虛擬主機:

為了測試,我們在hosts裡面新加了兩個 IP 域名解析

192.168.2.158 1.imoocc.com
192.168.2.158 2.imoocc.com

這樣直接將nginx.conf 裡面的hostname 修改為 1.imoocc.com port2.conf 裡面的hostname 修改為 2.imoocc.com,,然後 nginx -s reload

後面將結果貼上