Nginx 配置實例-配置虛擬主機

配置基於域名的虛擬主機

以下步驟將配置三個域名不同的虛擬主機,各虛擬主機規劃如下:

  • 域名爲 aaa.domain.com 的虛擬主機,處理所有對域名 aaa.domain.com 的訪問
  • 域名爲 bbb.otherdomain.com 的虛擬主機,處理所有對域名 bbb.otherdomain.com 的訪問

1. 配置域名爲 aaa.domain.com 的虛擬主機

1.1 nginx 中虛擬主機的配置

修改 nginx 的配置文件 nginx.conf,將 http 模塊內容修改如下:

http {
    # 虛擬主機 aaa.domain.com
    server {
        # 監聽的 IP 和端口
        listen  80; 
        # 虛擬主機名
        server_name aaa.domain.com; 
        # 日誌
        access_log  /var/log/nginx/domain-aaa-access.log combined;
        location / { 
            # 首頁
            index index.html index.htm;
            # HTML 網頁文件的根目錄
            root /html/nginx/domain-aaa;
        }
    }   
}

1.2 相關目錄及文件的創建

在上面的配置文件中,配置了兩個相關的目錄,一個是 access_log 配置的日誌目錄,另一個是 root 配置的網頁文件的根目錄,分別創建如下兩個目錄:

# 創建 nginx.conf 配置文件中 access_log 配置的日誌目錄
cd /var/log/
mkdir nginx

# 創建 nginx.conf 配置文件中 root 配置的網頁文件的根目錄
mkdir -vp /html/nginx/domain-aaa

創建完成 /html/nginx/domain-aaa 目錄後,需向該目錄添加 html 文件,充當默認首頁

# 拷貝 nginx 的默認首頁到 domain-aaa 目錄,充當 aaa.domain.com 主機的默認首頁
cp -vr /usr/local/nginx/html/* /html/nginx/domain-aaa

修改 index.html 文件,修改內容如下:
在這裏插入圖片描述

1.3 驗證域名爲 aaa.domain.com 的虛擬主機配置是否成功

在修改 nginx 的配置文件之後,需要進行重載:

# 驗證 nginx 的配置文件是否正確
/usr/local/nginx/sbin/nginx -t

# 重啓 nginx(只有一個 server 時需要使用重啓)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx

# 重載 nginx(多於一個 server 時可以使用重載)
/usr/local/nginx/sbin/nginx -s reload

要想通過域名正確訪問 aaa.domain.com,還需配置域名和IP的映射關係,修改本機的 hosts 文件,添加如下內容:

192.168.25.101 aaa.domain.com

瀏覽器訪問 aaa.domain.com,將會出現默認首頁,頁面內容如下:
在這裏插入圖片描述

2. 配置域名爲 bbb.otherdomain.com 的虛擬主機

2.1 nginx 中虛擬主機的配置

修改 nginx 的配置文件 nginx.conf,將 http 模塊內容修改如下:

http {
    # 虛擬主機 aaa.domain.com
    server {
        # 監聽的 IP 和端口
        listen  80; 
        # 虛擬主機名
        server_name aaa.domain.com; 
        # 日誌
        access_log  /var/log/nginx/domain-aaa-access.log combined;
        location / { 
            # 首頁
            index index.html index.htm;
            # HTML 網頁文件的根目錄
            root /html/nginx/domain-aaa;
        }
    }   

    # 虛擬主機 bbb.otherdomain.com
    server {
        # 監聽的 IP 和端口
        listen  80; 
        # 虛擬主機名
        server_name bbb.otherdomain.com;    
        # 日誌
        access_log  /var/log/nginx/domain-bbb-access.log combined;
        location / { 
            # 首頁
            index index.html index.htm;
            # HTML 網頁文件的根目錄
            root /html/nginx/domain-bbb;
        }
    }   
}

2.2 相關目錄及文件的創建

在上面的配置文件中,配置了兩個相關的目錄,一個是 access_log 配置的日誌目錄,另一個是 root 配置的網頁文件的根目錄,分別創建如下兩個目錄:

# 創建 nginx.conf 配置文件中 access_log 配置的日誌目錄
cd /var/log/
mkdir nginx

# 創建 nginx.conf 配置文件中 root 配置的網頁文件的根目錄
mkdir -vp /html/nginx/domain-bbb

創建完成 /html/nginx/domain-bbb 目錄後,需向該目錄添加 html 文件,充當默認首頁

# 拷貝 nginx 的默認首頁到 domain-bbb 目錄,充當 bbb.otherdomain.com 主機的默認首頁
cp -vr /usr/local/nginx/html/* /html/nginx/domain-bbb

修改 index.html 文件,修改內容如下:
在這裏插入圖片描述

2.3 驗證域名爲 bbb.otherdomain.com 的虛擬主機配置是否成功

在修改 nginx 的配置文件之後,需要進行重載:

# 驗證 nginx 的配置文件是否正確
/usr/local/nginx/sbin/nginx -t

# 重啓 nginx(只有一個 server 時需要使用重啓)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx

# 重載 nginx(多於一個 server 時可以使用重載)
/usr/local/nginx/sbin/nginx -s reload

要想通過域名正確訪問 aaa.domain.com,還需配置域名和IP的映射關係,修改本機的 hosts 文件,添加如下內容:

192.168.25.101 bbb.otherdomain.com

瀏覽器訪問 bbb.otherdomain.com,將會出現默認首頁,頁面內容如下:
在這裏插入圖片描述

參考文檔

《實戰Nginx-取代Apache的高性能Web服務器》3.2.3 配置基於域名的虛擬主機

配置基於 IP 的虛擬主機

以下步驟將配置三個 IP 不同的虛擬主機,各虛擬主機規劃如下:

  • IP 爲 192.168.25.101 的虛擬主機——真實主機
  • IP 爲 192.168.25.199 的虛擬主機——通過爲網卡添加 IP 別名創建的虛擬主機
  • IP 爲 192.169.25.200 的虛擬主機——通過爲網卡添加 IP 別名創建的虛擬主機

1. 配置 IP 爲 192.168.25.101 的虛擬主機

1.1 nginx 中虛擬主機的配置

修改 nginx 的配置文件 nginx.conf,將 http 模塊內容修改如下:

http {
    # 虛擬主機 192.168.25.101
    server {
        # 監聽的 IP 和端口
        listen  192.168.25.101:80;
        # 虛擬主機名
        server_name 192.168.25.101; 
        # 日誌
        access_log  /var/log/nginx/101-access.log combined;
        location / { 
            # 首頁
            index index.html index.htm;
            # HTML 網頁文件的根目錄
            root /html/nginx/101;
        }
    }   
}

1.2 相關目錄及文件的創建

在上面的配置文件中,配置了兩個相關的目錄,一個是 access_log 配置的日誌目錄,另一個是 root 配置的網頁文件的根目錄,分別創建如下兩個目錄:

# 創建 nginx.conf 配置文件中 access_log 配置的日誌目錄
cd /var/log/
mkdir nginx

# 創建 nginx.conf 配置文件中 root 配置的網頁文件的根目錄
mkdir -vp /html/nginx/101

創建完成 /html/nginx/101 目錄後,需向該目錄添加 html 文件,充當默認首頁

# 拷貝 nginx 的默認首頁到 101 目錄,充當 192.168.25.101 主機的默認首頁
cp -vr /usr/local/nginx/html/* /html/nginx/101

修改 index.html 文件,修改內容如下:
在這裏插入圖片描述

1.3 驗證 192.168.25.101 的虛擬主機配置是否成功

在修改 nginx 的配置文件之後,需要進行重載:

# 驗證 nginx 的配置文件是否正確
/usr/local/nginx/sbin/nginx -t

# 重啓 nginx(只有一個 server 時需要使用重啓)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx

# 重載 nginx(多於一個 server 時可以使用重載)
/usr/local/nginx/sbin/nginx -s reload

瀏覽器訪問 192.168.25.101,將會出現 101 主機的默認首頁,頁面內容如下:
在這裏插入圖片描述

2. 配置 IP 爲 192.168.25.199 的虛擬主機

2.1 192.168.25.199 虛擬主機的模擬

這裏虛擬主機的模擬,主要是通過給網卡取 IP 別名來完成的。

  1. 使用 ifconfig 命令查看當前主機的網卡和 IP
    在這裏插入圖片描述
  2. 在 eth0 網卡上添加 192.168.25.199 的 IP 別名
/sbin/ifconfig eth0:1 192.168.25.199 broadcast 192.168.25.255 netmask 255.255.255.0 up
/sbin/route add -host 192.168.25.199 dev eth0:1
  1. 驗證 eth0 的 IP 別名 192.168.25.199 添加是否成功
    使用 ifconifg 命令查看 IP 相關信息
    在這裏插入圖片描述
    使用 ping 命令查看 192.168.25.199 的 IP 是否可以連接
    在這裏插入圖片描述

2.2 nginx 中虛擬主機的配置

修改 nginx 的配置文件 nginx.conf,修改 http 模塊內容如下:

http {
    # 虛擬主機 192.168.25.101
    server {
        # 監聽的 IP 和端口
        listen  192.168.25.101:80;
        # 虛擬主機名
        server_name 192.168.25.101; 
        # 日誌
        access_log  /var/log/nginx/101-access.log combined;
        location / { 
            # 首頁
            index index.html index.htm;
            # HTML 網頁文件的根目錄
            root /html/nginx/101;
        }
    }   

    # 虛擬主機 192.168.25.199
    server {
        # 監聽的 IP 和端口
        listen  192.168.25.199:80;
        # 虛擬主機名
        server_name 192.168.25.199; 
        # 日誌
        access_log  /var/log/nginx/199-access.log combined;
        location / { 
            # 首頁
            index index.html index.htm;
            # HTML 網頁文件的根目錄
            root /html/nginx/199;
        }
    }   
}

2.3 相關目錄及文件的創建

在上面的配置文件中,配置了兩個相關的目錄,一個是 access_log 配置的日誌目錄,另一個是 root 配置的網頁文件的根目錄,分別創建如下兩個目錄:

# 創建 nginx.conf 配置文件中 access_log 配置的日誌目錄
cd /var/log/
mkdir nginx

# 創建 nginx.conf 配置文件中 root 配置的網頁文件的根目錄
mkdir -vp /html/nginx/199

創建完成 /html/nginx/199 目錄後,需向該目錄添加 html 文件,充當默認首頁

# 拷貝 nginx 的默認首頁到 199 目錄,充當 192.168.25.199 主機的默認首頁
cp -vr /usr/local/nginx/html/* /html/nginx/199

修改 index.html 文件,修改內容如下:
在這裏插入圖片描述

2.4 驗證 192.168.25.199 的虛擬主機配置是否成功

在修改 nginx 的配置文件之後,需要進行重載:

# 驗證 nginx 的配置文件是否正確
/usr/local/nginx/sbin/nginx -t

# 重啓 nginx(只有一個 server 時需要使用重啓)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx

# 重載 nginx(多於一個 server 時可以使用重載)
/usr/local/nginx/sbin/nginx -s reload

瀏覽器訪問 192.168.25.199,將會出現 199 主機的默認首頁,頁面內容如下:
在這裏插入圖片描述

3. 配置 IP 爲 192.168.25.200 的虛擬主機

3.1 192.168.25.200 虛擬主機的模擬

這裏虛擬主機的模擬,主要是通過給網卡取 IP 別名來完成的。

  1. 使用 ifconfig 命令查看當前主機的網卡和 IP
    在這裏插入圖片描述
  2. 在 eth0 網卡上添加 192.168.25.200 的 IP 別名
/sbin/ifconfig eth0:2 192.168.25.200 broadcast 192.168.25.255 netmask 255.255.255.0 up
/sbin/route add -host 192.168.25.200 dev eth0:2
  1. 驗證 eth0 的 IP 別名 192.168.25.200 添加是否成功
    使用 ifconifg 命令查看 IP 相關信息
    在這裏插入圖片描述
    使用 ping 命令查看 192.168.25.199 的 IP 是否可以連接
    在這裏插入圖片描述

3.2 nginx 中虛擬主機的配置

修改 nginx 的配置文件 nginx.conf,修改 http 模塊內容如下:

http {
    # 虛擬主機 192.168.25.101
    server {
        # 監聽的 IP 和端口
        listen  192.168.25.101:80;
        # 虛擬主機名
        server_name 192.168.25.101; 
        # 日誌
        access_log  /var/log/nginx/101-access.log combined;
        location / { 
            # 首頁
            index index.html index.htm;
            # HTML 網頁文件的根目錄
            root /html/nginx/101;
        }   
    }   

    # 虛擬主機 192.168.25.199
    server {
        # 監聽的 IP 和端口
        listen  192.168.25.199:80;
        # 虛擬主機名
        server_name 192.168.25.199; 
        # 日誌
        access_log  /var/log/nginx/199-access.log combined;
        location / { 
            # 首頁
            index index.html index.htm;
            # HTML 網頁文件的根目錄
            root /html/nginx/199;
        }   
    }   

    # 虛擬主機 192.168.25.200
    server {
        # 監聽的 IP 和端口
        listen  192.168.25.200:80;
        # 虛擬主機名
        server_name 192.168.25.200; 
        # 日誌
        access_log  /var/log/nginx/200-access.log combined;
        location / { 
            # 首頁
            index index.html index.htm;
            # HTML 網頁文件的根目錄
            root /html/nginx/200;
        }   
    }   

}

3.3 相關目錄及文件的創建

在上面的配置文件中,配置了兩個相關的目錄,一個是 access_log 配置的日誌目錄,另一個是 root 配置的網頁文件的根目錄,分別創建如下兩個目錄:

# 創建 nginx.conf 配置文件中 access_log 配置的日誌目錄
cd /var/log/
mkdir nginx

# 創建 nginx.conf 配置文件中 root 配置的網頁文件的根目錄
mkdir -vp /html/nginx/200

創建完成 /html/nginx/200 目錄後,需向該目錄添加 html 文件,充當默認首頁

# 拷貝 nginx 的默認首頁到 200 目錄,充當 192.168.25.200 主機的默認首頁
cp -vr /usr/local/nginx/html/* /html/nginx/200

修改 index.html 文件,修改內容如下:
在這裏插入圖片描述

3.4 驗證 192.168.25.200 的虛擬主機配置是否成功

在修改 nginx 的配置文件之後,需要進行重載:

# 驗證 nginx 的配置文件是否正確
/usr/local/nginx/sbin/nginx -t

# 重啓 nginx(只有一個 server 時需要使用重啓)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx

# 重載 nginx(多於一個 server 時可以使用重載)
/usr/local/nginx/sbin/nginx -s reload

瀏覽器訪問 192.168.25.199,將會出現 199 主機的默認首頁,頁面內容如下:
在這裏插入圖片描述

參考文檔

《實戰Nginx-取代Apache的高性能Web服務器》3.2.2 配置基於IP的虛擬主機

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