修改Nginx配置文件,添加server容器實現基於域名、基於IP和基於端口的虛擬主機。

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;
... ...
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章