天天看點

Nginx極簡入門(二)配置基于ip的虛拟主機

前面講了如何安裝和配置Nginx,今天要說的是Nginx如何配置虛拟主機。

需要說明的是:由于本文章是nginx系列文章中的一篇,文章裡面很多其他的配置,可能前面的文章已經說講過,然後後續就沒有在介紹,如果出現有些配置沒有講,大家可能需要去看看前面的文章。

一. 什麼是虛拟主機

虛拟主機是一種特殊的軟硬體技術,它可以将網絡上的每一台計算機分成多個虛拟主機,每個虛拟主機可以獨立對外提供www服務,這樣就可以實作一台主機對外提供多個web服務,每個虛拟主機之間是獨立的,互不影響的。

如下圖:

Nginx極簡入門(二)配置基于ip的虛拟主機

通過nginx可以實作虛拟主機的配置,nginx支援三種類型的虛拟主機配置:

1、基于ip的虛拟主機

2、基于域名的虛拟主機

3、基于端口的虛拟主機

實際使用的過程中,我們一般常用的是用域名或是端口來區分web服務。隻不過我這裡為了講的全面一點,會把三種配置都講一講。 

二. Nginx配置檔案的結構

要真正學會Nginx,就必須熟悉Nginx配置檔案的結構。下面先介紹Nginx的配置檔案結構。主要結構如下:

......
events {
    .......
}
http{
   .......
   server{
         .......
         }
   server{
         .......
         }
}      

上面的示例中,每個server就是一個虛拟主機。就代表着一個路由轉發的位址。

三. 基于ip的虛拟主機配置

Linux作業系統允許添加IP别名,就是在一塊實體網卡上綁定多個lP位址。這樣就能夠在使用單一網卡的同一個伺服器上運作多個基于IP的虛拟主機。

應用場景

一台nginx伺服器綁定兩個ip:192.168.78.132、192.168.78.133,通路不同的ip請求不同的html目錄,即:

通路

http://192.168.78.132

将通路html132目錄下的html網頁

http://192.168.78.133

将通路html133目錄下的html網頁

i. 準備環境

首先,建立192.168.78.132 的虛拟機;然後,保證本地電腦和虛拟網絡通暢。

在虛拟伺服器192.168.78.132上安裝Nginx。這個之前講過Nginx 的源碼安裝,大家可以去看看之前的文章,這裡就不重複了。

ii. 綁定多ip

1、修改網絡配置檔案,進入到

/etc/sysconfig/network-scripts

,編輯

ifcfg-ens33

檔案如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
# BOOTPROTO=dhcp 注意差別!!!
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=26c2f3f8-62c5-4571-80e2-ca394cfd43da
DEVICE=ens33
ONBOOT=yes
ZONE=public
# 注意差別
IPADDR0=192.168.78.132
PREFIX0=24
IPADDR1=192.168.78.133
PREFIX1=16      

 這裡使用一個虛拟主機,2個IP來模拟兩個虛拟主機的情況。IP位址分别為192.168.78.132和192.168.78.133

2、儲存修改,重新開機網絡,使用如下: systemctl restart network

[root@bogon network-scripts]# systemctl restart network      

這個是linux的基本指令,大家參照網上的資料,不明白的可以去這裡看看具體如何操作。

iii. 建立兩個web網站

進入/usr/local/nginx 目錄,将原來nginx的html目錄拷貝兩個目錄 “html132”和“html133”,為了友善測試需要修改每個目錄下的index.html内容使之個性化。

cd /usr/local/nginx
cp -r html html132
cp -r html html133      

 這裡建立了兩個網站目錄,分别為:html132、和html133。

iv. 配置虛拟主機

修改/usr/local/nginx/conf/nginx.conf檔案,添加兩個虛拟主機,如下:

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    sendfile        on;
    keepalive_timeout  65;
    #配置虛拟主機192.168.78.132
    server {
        #監聽的ip和端口,配置192.168.78.132:80
        listen       80;
        #虛拟主機名稱這裡配置ip位址
        server_name  192.168.78.132;
        #所有的請求都以/開始,所有的請求都可以比對此location
        location / {
             #使用root指令指定虛拟主機目錄即網頁存放目錄
             #比如通路http://ip/test.html将找到/usr/local/html3/test.html
             #比如通路http://ip/item/test.html将找到/usr/local/html3/item/test.html
             root   /usr/local/nginx/html132;
             #指定歡迎頁面,按從左到右順序查找
             index  index.html index.htm;
        }
    }
    #配置虛拟主機192.168.78.133
    server {
        listen       80;
        server_name  192.168.78.133;
        location / {
            root   /usr/local/nginx/html133;
            index  index.html index.htm;
        }
    }
}      

上面我們在Nginx配置檔案中,建立了2個虛拟主機,分别指向html132和html133網站。 

四. 驗證測試

重新啟動nginx,然後分别通路兩個Nginx虛拟主機。

http://12.168.78.132/
Nginx極簡入門(二)配置基于ip的虛拟主機
http://192.168.78.133/
Nginx極簡入門(二)配置基于ip的虛拟主機

以上,我們可以看到通過IP位址,我們成功通路到了我們對應的網站。說明基于IP的虛拟主機配置成功。

最後

以上,就把nginx 基于ip的配置虛拟主機講完了。後面會繼續講基于域名和端口的配置。

這是系列課程,大家關注我的微信公衆号(架構師精進),随時交流。

推薦閱讀:

Nginx極簡入門(一)如何在Linux系統編譯安裝Nginx服務 SpringBoot從入門到精通(二十八) JPA 的實體映射關系,輕松一對一,一對多,多對多關系映射! SpringBoot從入門到精通(二十七)使用Spring Data JPA 自定義查詢如此簡單,完全不需要寫SQL! Nginx極簡實戰—如何實作Nginx負載均衡高可用