Nginx總結(二)基於ip的虛擬主機配置


前面講了如何安裝配置Nginx,大家可以去這里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html

今天要說的是Nginx如何配置虛擬主機。

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

 

1. 什么是虛擬主機

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

如下圖:

 

通過nginx可以實現虛擬主機的配置,nginx支持三種類型的虛擬主機配置:

1、基於ip的虛擬主機

2、基於域名的虛擬主機

3、基於端口的虛擬主機

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

 

2. nginx配置文件的結構

nginx的配置文件結構如下:

......

events {

    .......

}

http{

   .......

   server{

         .......

         }

   server{

         .......

         }
}

每個server就是一個虛擬主機。

 

3. 基於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 的源碼安裝,大家可以去看看這篇文章:https://www.cnblogs.com/zhangweizhong/p/11378512.html

 

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、保存修改,重啟網絡: systemctl restart network

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

這個是參照網上的資料,不明白的可以去這里看看具體如何操作:https://blog.csdn.net/u013887008/article/details/79589656 

 

iii. 創建兩個web網站

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

cd /usr/local/nginx

cp -r html html132
cp -r html 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;
        }
    }
}

 

v. 測試

 重新啟動nginx,觀察端口監聽狀態:

訪問http://192.168.78.132/

 

訪問http://192.168.78.133/

 

 

4. 最后

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM