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 別名來完成的。
- 使用 ifconfig 命令查看當前主機的網卡和 IP
- 在 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
- 驗證 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 別名來完成的。
- 使用 ifconfig 命令查看當前主機的網卡和 IP
- 在 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
- 驗證 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的虛擬主機