前面講了如何安裝和配置Nginx,今天要說的是Nginx如何配置虛拟主機。
需要說明的是:由于本文章是nginx系列文章中的一篇,文章裡面很多其他的配置,可能前面的文章已經說講過,然後後續就沒有在介紹,如果出現有些配置沒有講,大家可能需要去看看前面的文章。
一. 什麼是虛拟主機
虛拟主機是一種特殊的軟硬體技術,它可以将網絡上的每一台計算機分成多個虛拟主機,每個虛拟主機可以獨立對外提供www服務,這樣就可以實作一台主機對外提供多個web服務,每個虛拟主機之間是獨立的,互不影響的。
如下圖:

通過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/以上,我們可以看到通過IP位址,我們成功通路到了我們對應的網站。說明基于IP的虛拟主機配置成功。
最後
以上,就把nginx 基于ip的配置虛拟主機講完了。後面會繼續講基于域名和端口的配置。
這是系列課程,大家關注我的微信公衆号(架構師精進),随時交流。
推薦閱讀:
Nginx極簡入門(一)如何在Linux系統編譯安裝Nginx服務 SpringBoot從入門到精通(二十八) JPA 的實體映射關系,輕松一對一,一對多,多對多關系映射! SpringBoot從入門到精通(二十七)使用Spring Data JPA 自定義查詢如此簡單,完全不需要寫SQL! Nginx極簡實戰—如何實作Nginx負載均衡高可用