zoukankan      html  css  js  c++  java
  • 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"则代表着先将客户端与允许规则进行对比,若匹配成功则允许访问,反之则直接拒绝。

  • 相关阅读:
    P1197 [JSOI2008]星球大战[并查集+图论]
    P1955 [NOI2015]程序自动分析[离散化+并查集]
    取模运算律[简单数学]
    P1462 通往奥格瑞玛的道路[最短路+二分+堆优化]
    P1330 封锁阳光大学[搜索+染色]
    P1168 中位数[堆 优先队列]
    P2661 信息传递[最小环+边带权并查集]
    P1080 【NOIP 2012】 国王游戏[贪心+高精度]
    P2085 最小函数值[优先队列]
    【转】priority_queue的用法
  • 原文地址:https://www.cnblogs.com/revo/p/7444511.html
Copyright © 2011-2022 走看看