CentOS6下使用Apache部署HTTP服务(6)

[root@CentOS6 conf.d]# cat isolinux.conf
<Directory "/var/www/html/isolinux">
    AuthType Basic    # Basic表示明文
    AuthName "isolinux"
    AuthUserFile "/etc/httpd/conf.d/.htuser"  # 存放用户和密码的文件 
    Require User Bob    # 表示只有后边指定的用户才可以登录,Valid-User表示只要输入密码正确就可以登录
</Directory>
# htpasswd命令创建两个用户Bob Alice
[root@CentOS6 conf.d]# htpasswd -cm /etc/httpd/conf.d/.htuser Bob    # -c表示首次创建的时候指定的用户文件,-m 表示MD5加密
New password:
Re-type new password:
Adding password for user Bob
[root@CentOS6 conf.d]# htpasswd -m /etc/httpd/conf.d/.htuser Alice  # 第二次创建用户的时候不需要加-c,否则会覆盖文件中的其他用户
New password:
Re-type new password:
Adding password for user Alice
[root@CentOS6 conf.d]# cat .htuser
Bob:$apr1$QO7u9/CG$tWj182TGwOBXg6.EIi36/1
Alice:$apr1$DPDl0yte$a7jtviDXWzpnfEped6VYh1

然后重启httpd,会出现如下效果,当输入指定的用户Bob和密码的时候,才能够进入isolinux目录

CentOS6下使用Apache部署HTTP服务

下面的是基于用户组认证的访问控制

[root@CentOS6 conf.d]# pwd
/etc/httpd/conf.d
[root@CentOS6 conf.d]# cat isolinux.conf
<Directory "/var/www/html/isolinux">
    AuthType Basic
    AuthName "isolinux"
    AuthUserFile "/etc/httpd/conf.d/.htuser"
    AuthGroupFile "/etc/httpd/conf.d/.htgroup"    # 新增加的组文件
    Require Group group1
</Directory>
[root@CentOS6 conf.d]# cat .htgroup                # 将Bob和Alice加入组
group1:Bob Alice

重启服务之后,只要是组里边的用户都可以登录isolinux目录,同时Alice也可以(上个例子中的Alice是不可以登录)。

基于客户端IP和用户(组)的双重认证,需要借助选项Satisfy,

[root@CentOS6 conf.d]# pwd
/etc/httpd/conf.d
[root@CentOS6 conf.d]# cat isolinux.conf
<Directory "/var/www/html/isolinux">
    Order Deny,Allow
    deny from all
    allow from 172.18.251.124    # 只允许172.18.251.124的IP能够登录该isolinux目录
    AuthType Basic
    AuthName "isolinux"
    AuthUserFile "/etc/httpd/conf.d/.htuser"
    AuthGroupFile "/etc/httpd/conf.d/.htgroup"
    Require Group group1        # 保持上边的例子不变,仍然为Bob Alice
    Satisfy Any                  # Any表示只要符合其中一项即可,All表示必须同时满足IP和用户(组)才能登录
</Directory>

如下图所示,访问(服务端IP)172.18.250.183/isolinux,因为客户端IP满足要求,因此就不需要通过用户认证。满足其一即可。

CentOS6下使用Apache部署HTTP服务

八、虚拟主机的实现

虚拟主机的实现有三种实现方案,分别为

基于IP:每个虚拟主机至少一个IP

基于Port:每个虚拟主机至少一个独立的Port

基于域名:每个虚拟主机至少一个域名

8.1 基于IP的虚拟主机

[root@CentOS6 conf.d]# pwd
/etc/httpd/conf.d
[root@CentOS6 conf.d]# cat virtualhost.conf
<VirtualHost 192.168.124.1:80>    # 124.1和138.254是同一主机上的两个IP
    DocumentRoot/var/www/html
    <Directory "/var/www/html">    # 因为/var/www/html目录下添加默认的首页,所有设置了Options Indexes指令。
        Options Indexes
    </Directory>
</VirtualHost>
<VirtualHost 192.168.138.254:80>
    DocumentRoot/var/www/error
    <Directory "/var/www/error">
        Options Indexes
    </Directory>
</VirtualHost>
[root@CentOS6 www]# pwd
/var/www
[root@CentOS6 www]# ls
cgi-bin  error  html  icons  manual
# 然后重启服务

CentOS6下使用Apache部署HTTP服务

CentOS6下使用Apache部署HTTP服务

8.2 基于Port的虚拟主机

这种方法是基于一个ip上绑定多端口来实现的

[root@CentOS6 conf.d]# cat virtualhost.conf
Listen 192.168.138.254:8090    # 设置监听的端口号
Listen 192.168.138.254:8080
<VirtualHost 192.168.138.254:8090>
    DocumentRoot/var/www/html
    <Directory "/var/www/html">
        Options Indexes
    </Directory>
</VirtualHost>
<VirtualHost 192.168.138.254:8080>
    DocumentRoot/var/www/error
    <Directory "/var/www/error">
        Options Indexes
    </Directory>
</VirtualHost>

可以看到同一IP的不同端口,访问的资源不同

CentOS6下使用Apache部署HTTP服务

CentOS6下使用Apache部署HTTP服务

小tips:设置好基于port的虚拟主机后,重启httpd会失败,错误信息如下

(13)Permission denied: make_sock: could not bind to address 192.168.138.254:8090

no listening sockets available, shutting down

able to open logs

这是由于SELinux的缘故,需要关闭SELinux,httpd就可以正常启动了。

/etc/httpd/conf.d/welcome.conf

8.3 基于域名的虚拟主机

一个IP上对应多个域名,不同的域名对应各自的站点,先来配置httpd的配置文件,对应/var/www/html目录,对应/var/www/error目录,

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9b2eee164881679d4442cc40ae62676f.html