Linux:Apache改靜態網頁、個人用戶主頁、虛擬網站主機、Apache訪問控制


Apache改靜態網頁

 1.概述: Apache是web服務器(靜態解析,如HTML),tomcat是java應用服務器(動態解析,如JSP、PHP)

  Tomcat只是一個servlet(jsp也翻譯成servlet)容器,可以認為是apache的擴展,但是可以獨立於apache運行
2.方法:
                   先安裝軟件包httpd:yum install httpd
                   然后瀏覽器中輸入地址:        192.168.10.10即可出現測試頁面 
                   主配置文件位置:vim /etc/httpd/conf/httpd.conf 
                   默認網站數據目錄:/var/www/html 
 第10章 使用Apache服務部署靜態網站。第10章 使用Apache服務部署靜態網站。
 ---------------------------如果將默認網站數據目錄修改為/home/wwwroot-----
----SElinux------------------------------------------------------------
 SELinux安全策略包括域和安全上下文:

SELinux域:對進程資源進行限制(查看方式:ps -Z)

SELinux安全上下文:對系統資源進行限制(查看方式:ls -Z
修改默認數據目錄后,selinux安全上下文不一樣:
 [root@linuxprobe ~]# ls -Zd /var/www/html

drwxr-xr-x. root root  system_u:object_r:httpd_sys_content_t:s0 /var/www/html
[root@linuxprobe ~]# ls -Zd /home/wwwroot
drwxrwxrwx. root root  unconfined_u:object_r:home_root_t:s0 /home/wwwroot
用戶段:root表示root賬戶身份,user_u表示普通用戶身份,system_u表示系統進程身份。
角色段:object_r是文件目錄角色,system_r是一般進程角色。
類型段:進程和文件都有一個類型用於限制存取權限
 修改網站數據目錄的安全上下文:

[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot

修改網站數據的安全上下文(*代表所有文件或目錄):

[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*

這樣操作后查看到SELinux安全上下文依然沒有改變,不要着急,再執行下restorecon命令即可:

[root@linuxprobe ~]# restorecon -Rv /home/wwwroot/

個人用戶主頁

說明:可以為服務器系統內的用戶生成個人網站

 1.編輯配置文件:vim /etc/httpd/conf.d/userdir.conf
改:
#UserDir disabled
UserDir public_html
 注意:UserDir參數表示的是需要在用戶家目錄中創建的網站數據目錄的名稱(即 public_html)
並且需要設置/home/linuxprobe目錄權限:   chmod 755 /home/linuxprobe/
修改之后,還需要改SELinux的域限制:
先查找有個httpd服務的域:getsebool -a | grep "httpd" 
修改其中的:  setsebool -P httpd_enable_homedirs=on

添加密碼:
 1.先生成一個驗證賬戶,任意: htpasswd -c /etc/httpd/passwd lichen    (/etc/httpd/passwd為密碼保存位置)
 2.編輯配置文件:vim /etc/httpd/conf.d/userdir.conf 
3.在配置文件最后添加: 
 <Directory "/home/*/public_html">
AllowOverride all
authuserfile "/etc/httpd/passwd"
authname "HAHAHAHAHAHAH"
authtype basic
require user lichen
</Directory>
4.重啟httpd服務。
5.完成。 

虛擬網站主機

 一、基於IP地址
就是說,一台服務器有多個IP地址,用戶訪問不同的IP地址時顯示不同的頁面。

        第1步:為網卡添加多個IP地址,添加完后ping 192.168.10.10/20/30 都能ping通。
        第2步: 分別創建網站數據目錄:mkdir -p /home/wwwroot/10
                                                            mkdir -p /home/wwwroot/20
                                                            mkdir -p /home/wwwroot/30
                        分別寫入文件index.html    內容分別為10.20.30
        第3步:在主配置文件/etc/httpd/conf/http.conf中描述基於IP地址的虛擬主機.
  <VirtualHost 192.168.10.10>

DocumentRoot /home/wwwroot/10
ServerName www.hostname1.com
<Directory /home/wwwroot/10 >
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

<VirtualHost 192.168.10.20>
DocumentRoot /home/wwwroot/20
ServerName bbs.hostname1.com
<Directory /home/wwwroot/20 >
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

<VirtualHost 192.168.10.30>
DocumentRoot /home/wwwroot/30
ServerName tech.hostname1.com
<Directory /home/wwwroot/30 >
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

        第4步:修改網站數據目錄的SELinux安全上下文:
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot

[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/*
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/*
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/*
        第5步:立即恢復安全上下文 :
[root@linuxprobe ~]# restorecon -Rv /home/wwwroot 
        第6步:驗證。在瀏覽器地址欄分別輸入192.168.10.10   192.168.10.20    192.168.10.30出現不同的信息。

二、基於主機名 
         當服務器無法為每個網站都分配到獨立IP地址時,可以試試讓Apache服務程序自動識別來源主機名或域名然后跳轉到指定的網站。
第1步:配置網卡與hosts文件
        網卡地址配置為:192.168.10.10 
        配置hosts文件: hosts文件作用是定義IP地址與主機名的映射關系, 即強制將某個主機名地址解析到指定的IP地址
         [root@linuxprobe ~]# vim /etc/hosts

        //每行只能寫一條,格式為IP地址+空格+主機名(域名)。
        192.168.10.10 www.hostname1.com
        192.168.10.10 bbs.hostname1.com
        192.168.10.10 tech.hostname1.com

第2步:創建目錄並寫入文件:
         [root@linuxprobe ~]# mkdir -p /home/wwwroot/www
     [root@linuxprobe ~]# mkdir -p /home/wwwroot/bbs
        [root@linuxprobe ~]# mkdir -p /home/wwwroot/tech

         [root@linuxprobe ~]# echo "WWW.hostname1.com" > /home/wwwroot/www/index.html
     [root@linuxprobe ~]# echo "BBS.hostname1.com" > /home/wwwroot/bbs/index.html
          [root@linuxprobe ~]# echo "TECH.hostname1.com" > /home/wwwroot/tech/index.html

 第3步:在配置文件中描述基於主機名稱的虛擬主機:在主配置文件末尾添加
 <VirtualHost 192.168.10.10>
 
DocumentRoot "/home/wwwroot/www"
ServerName "www.hostname1.com"
<Directory "/home/wwwroot/www">
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

 
<VirtualHost 192.168.10.10>
 
DocumentRoot "/home/wwwroot/bbs"
ServerName "bbs.hostname1.com"
<Directory "/home/wwwroot/bbs">
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

 
<VirtualHost 192.168.10.10>
 
DocumentRoot "/home/wwwroot/tech"
ServerName "tech.hostname1.com"
<Directory "/home/wwwroot/tech">
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
 
第4步:修改網站數據目錄的SELinux安全上下文:
 
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www/*
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs/*
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech/*

讓新的SELinux安全上下文立即生效:
[root@linuxprobe ~]# restorecon -Rv /home/wwwroot/
第5步,分別訪問網頁驗證結果.  www.hostname1.com  tech.hostname1.com  bbs.hostname1.com

三、基於端口號 6111、6222
 第1步:配置IP地址192.168.10.10
     第2步:創建網站數據目錄
                 mkdir -p /home/wwwroot/6111
           mkdir -p /home/wwwroot/6222
             echo "port:6111" > /home/wwwroot/6111/index.html
                 echo "port:6222" > /home/wwwroot/6222/index.html
    第3步 :在主配置文件中描述基於端口號的虛擬主機
                 配置文件42行添加監聽端口 Listen 6111    
                                                                Listen 6222
                    配置文件末尾添加:
 <VirtualHost 192.168.10.10:6111>

DocumentRoot "/home/wwwroot/6111"
ServerName www.hostname1.com
<Directory "/home/wwwroot/6111">
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

<VirtualHost 192.168.10.10:6222>
DocumentRoot "/home/wwwroot/6222"
ServerName bbs.hostname1.com
<Directory "/home/wwwroot/6222">
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
                                                       如果重啟服務會報錯。 因為6111、6222不是該服務默認端口,會被SELinux拒絕
                  第4步:
修改網站數據目錄的SELinux安全上下文並允許端口監聽。
 
semanage fcontext -a -t httpd_user_content_t /home/wwwroot
 semanage fcontext -a -t httpd_user_content_t /home/wwwroot/6111
 semanage fcontext -a -t httpd_user_content_t /home/wwwroot/6111/*
 semanage fcontext -a -t httpd_user_content_t /home/wwwroot/6222
 semanage fcontext -a -t httpd_user_content_t /home/wwwroot/6222/*
立即生效:

restorecon -Rv /home/wwwroot/
使用semanage命令搜索在SELinux系統中有關http服務的端口號:
 semanage port -l| grep http
把6111 6222端口添加進去:
 semanage port -a -t http_port_t -p tcp 6111
     semanage port -a -t http_port_t -p tcp 6222
再次重啟httpd服務就沒有問題了: systemctl restart httpd
            第5步:訪問網站驗證結果: 192.168.10.10:6111 192.168.10.10:6222

Apache訪問控制

第1步:   創建網站數據目錄和首頁文件
                    mkdir /var/www/html/server
                        echo "succesful" > /var/www/html/server/index.html
第2步:   修改配置文件
                    vim /etc/httpd/conf/httpd.conf
                        第129行:例如只允許IE瀏覽器訪問本網站
                            <Directory "/var/www/html/server">
                                SetEnvIf User-Agent  "Internet Explorer"    ie=1
                                Order    allow,deny
                                Allow from env=ie
                            </Directory> 
                        例如只允許火狐瀏覽器訪問:
                         <Directory "/var/www/html/server">

                                SetEnvIf User-Agent  "FireFox"    ff=1
                                Order    allow,deny
                                Allow from env=ff
                            </Directory>
                          例如僅允許192.168.10.20的主機訪問:
                            <Directory "/var/www/html/server">
                                Order    allow,deny
                                Allow  from 192.168.10.20
                            </Directory>
第3步: 重啟服務驗證 


我們還可以基於主機名IP地址以及客戶端特征做Apache網頁資源的訪問控制,常用的指令有:

Order(排序),Allow(允許),Deny(拒絕),Satisfy(滿足)。
 
其中Order指令用於定義Allow或Deny起作用的順序,分別實現了允許或者拒絕某個主機訪問服務器網頁資源。

匹配原則為:按順序匹配規則並執行,若未匹配成功則執行后面的執行。

比如說"Order Allow,Deny"則代表着先將客戶端與允許規則進行對比,若匹配成功則允許訪問,反之則直接拒絕。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM