本篇文章延伸主題:Web 伺服器(第一版 - 續)-Name-based Virtual Host
20121217內容修訂
Virtual Host 分成以下兩種
- Name-based Virtual Hosts:網頁伺服器架設多個網站,但屬於同一個 IP 位址。
- IP-based Virtual Hosts:網頁伺服器架設多個網站,而每個網站都有屬於自己的 IP 位址。
Server(10.10.10.139)
Client(10.10.10.140)
規劃網站:
第一個網站:
# echo "apacheserver139.example.com" > /var/www/html/index.html
第二個網站:
# mkdir /var/www/vhost
# ll -dZ /var/www/vhost/
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/vhost/
# echo "vhostapacheserver139.example.com" > /var/www/vhost/index.html
注意:因為資料夾 vhost 是以管理者身份在路徑 /var/www 底下產生的,所以 SELinux context types 是 httpd_sys_content_t,如果是在別的路徑,就要改變 SELinux context 否則無法存取首頁。指令請看 Troubleshootingbr />第三個網站:需輸入帳密才能存取
# mkdir /var/www/svhost
# echo "secretapacheserver139.example.com" > /var/www/vhost/private/index.html
編輯 Apache 組態檔
# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
<VirtualHost *:80> // 此區塊設定可以省略
DocumentRoot /var/www/html
ServerName apacheserver139.example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/vhost
ServerName vhostapacheserver139.example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/svhost
ServerName secretapacheserver139.example.com
<Directory /var/www/svhost>
AuthName "Secret Hideout"
AuthType basic // 傳輸過程不加密,因此最好搭配 ssl 才安全。
AuthUserFile /var/www/svhost/users
require valid-user
</Directory>
</VirtualHost>
測試組態檔語法是否正確
# service httpd configtest // 使用httpd -t亦可
Syntax OK
為第三個網站產生私有區域的帳密
# htpasswd -cm /var/www/svhost/users privateuser
New password: 1
Re-type new password: 1
Adding password for user privateuser
重啟 Apache
# service httpd restart
客戶端測試
在沒有架設 DNS 伺服器時,可以編輯 /etc/hosts 組態檔,讓瀏覽器知道網址所對應的 IP 位址
# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.10.10.139 apacheserver139.example.com
10.10.10.139 vhostapacheserver139.example.com
10.10.10.139 secrteapacheserver139.example.com
第一及第二網站存取測試:
第三網站存取測試:
Troubleshooting
提供 2 種變更 SELinux types 指令
# chcon -Rt httpd_sys_content_t /another_path // 參數『R』是將路徑下的所有資料也一併變更
# chcon -R --reference /var/www/html /another_path // 參考 /var/www/html 的 SELinux context type
沒有留言:
張貼留言