3.1 問題
沿用練習二,配置基於域名的虛擬主機,實現以下目標:
實現兩個基於域名的虛擬主機,域名分別爲www.a.com和www.b.com
對域名爲www.a.com的站點進行用戶認證,用戶名稱爲tom,密碼爲123456
3.2 方案
修改Nginx配置文件,添加server容器實現虛擬主機功能;對於需要進行用戶認證的虛擬主機添加auth認證語句。
虛擬主機一般可用分爲:基於域名、基於IP和基於端口的虛擬主機。
3.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:修改配置文件
1)修改Nginx服務配置,添加相關虛擬主機配置如下
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80; //端口
server_name www.a.com; //域名
auth_basic "Input Password:"; //認證提示符
auth_basic_user_file "/usr/local/nginx/pass"; //認證密碼文件
location / {
root html; //指定網站根路徑
index index.html index.htm;
}
}
… …
server {
listen 80; //端口
server_name www.b.com; //域名
location / {
root www; //指定網站根路徑
index index.html index.htm;
}
}
2)創建網站根目錄及對應首頁文件
[root@proxy ~]# mkdir /usr/local/nginx/www
[root@proxy ~]# echo "www" > /usr/local/nginx/www/index.html
3)重新加載配置
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
#請先確保nginx是啓動狀態,否則運行該命令會報錯,報錯信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
步驟二:客戶端測試
1)修改客戶端主機192.168.4.10的/etc/hosts文件,進行域名解析
[root@client ~]# vim /etc/hosts
192.168.4.5 www.a.com www.b.com
2)登錄192.168.4.10客戶端主機進行測試
注意:請先關閉真實機的firefox,再SSH -X遠程連接調用虛擬機的firefox。
[root@client ~]# firefox http://www.a.com //輸入密碼後可以訪問
[root@client ~]# firefox http://www.b.com //直接訪問
提示:或者直接使用真實主機做客戶端主機驗證,修改真實主機的/etc/hosts文件,直接使用真實主機的火狐瀏覽器訪問也可以。
步驟三:擴展課外實驗:其他類型的虛擬主機
1.基於端口的虛擬主機(參考模板)
server {
listen 8080; //端口
server_name web1.example.com; //域名
......
}
server {
listen 8000; //端口
server_name web1.example.com; //域名
.......
}
2.基於IP的虛擬主機(參考模板)
server {
listen 192.168.0.1:80; //IP地址與端口
server_name web1.example.com; //域名
... ...
}
server {
listen 192.168.0.2:80; //IP地址與端口
server_name web1.example.com;
... ...
}