httpd虚拟主机配置及基于用户的访问控制

本文旨在实践httpd虚拟主机及基于用户的访问控制


知识储备



虚拟主机有三种实现方案:

基于ip:

为每个虚拟主机准备至少一个独有ip地址;

基于port:

为每个虚拟主机使用至少一个独有的port;

基于FQDN:

为每个虚拟主机使用至少一个FQDN;

注意:一般虚拟机不要与中心主机混用;因此,要使用虚拟主机,得先禁用‘main‘主机;

禁用方法:注释中心主机的DocumentRoot指令即可;

基于用户的访问控制:

http协议认证方式2种

basic:明文

digest:消息摘要认证

本次以basic为例进行演示。

实验要求



实验机器:centos6.7 x86_64

实验软件:httpd-2.2.15-45.el6.centos.x86_64  yum安装

配置httpd虚拟主机



1. 配置基于ip的虚拟主机

1.1 配置要用到的ip地址

    [[email protected] ~]# ip addr add  172.16.52.2/16 dev eth1
    [[email protected] ~]# ip addr show eth1
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 10    00
    link/ether 00:0c:29:d2:e8:ff brd ff:ff:ff:ff:ff:ff
    inet 172.16.52.1/16 brd 172.16.255.255 scope global eth1
    inet 172.16.52.2/16 scope global secondary eth1
    inet6 fe80::20c:29ff:fed2:e8ff/64 scope link 
       valid_lft forever preferred_lft forever

1.2 配置虚拟主机文件

配置/etc/httpd/conf.d/vhost{1,2}.conf #以.conf结尾都行

    [[email protected] conf.d]# cat vhosts{1,2}.conf    
    <VirtualHost 172.16.52.1:80>
    ServerName www1.magedu.com
    DocumentRoot "/data/vhosts/www1"
    CustomLog logs/www1/www1.access_log combined
    ErrorLog  logs/www1/www1.error_log
    </VirtualHost>
    <VirtualHost 172.16.52.2:80>
    ServerName www2.magedu.com
    DocumentRoot "/data/vhosts/www2"
    CustomLog logs/www2/www2.access_log combined
    ErrorLog logs/www2/www2.error_log
    </VirtualHost>

注意该创建的目录要事先创建好!

1.3 配置虚拟主机站点文件

    [[email protected] conf.d]# cat /data/vhosts/www{1,2}/index.html    
    <h1>www1 Page www1.magedu.com</h1>
    web2 page www2.magedu.com

1.4 检查并重载

    [[email protected] conf.d]# httpd -t
    Syntax OK
    [[email protected] conf.d]# service httpd reload
    Reloading httpd:

1.5 测试

    [[email protected] conf.d]# curl 172.16.52.1
    <h1>www1 Page www1.magedu.com</h1>
    [[email protected] conf.d]# curl 172.16.52.2
    web2 page www2.magedu.com

2.配置基于端口的虚拟主机

    2.1 确保httpd已经监听了多个端口

[[email protected] conf.d]# grep "^Listen" /etc/httpd/conf/httpd.conf
Listen  80
Listen  808
[[email protected] logs]# netstat -tnlp|grep httpd
tcp        0      0 :::808                      :::*                        LISTEN      20215/httpd         
tcp        0      0 :::80                       :::*                        LISTEN      20215/httpd

2.2 配置虚拟主机文件

[[email protected] conf.d]# cat vhosts{1,2}.conf
<VirtualHost 172.16.52.1:80>
	ServerName www1.magedu.com
	DocumentRoot "/data/vhosts/www1"
	CustomLog logs/www1/www1.access_log combined
	ErrorLog  logs/www1/www1.error_log
</VirtualHost>
<VirtualHost 172.16.52.1:808>
	ServerName www2.magedu.com
	DocumentRoot "/data/vhosts/www2"
	CustomLog logs/www2/www2.access_log combined
	ErrorLog logs/www2/www2.error_log
</VirtualHost>

    2.3 检查并重载

httpd -t

service httpd reload

    2.4 测试

[[email protected] conf.d]# curl 172.16.52.1:80
<h1>www1 Page www1.magedu.com</h1>
[[email protected] conf.d]# curl 172.16.52.1:808
web2 page www2.magedu.com

3.配置基于域名的虚拟主机

    3.1 开启NameVirtualHost

[[email protected] httpd]# grep "^NameVirtualHost" /etc/httpd/conf/httpd.conf
NameVirtualHost 172.16.52.1:80

    3.2 配置虚拟主机文件

[[email protected] conf.d]# cat vhosts{1,2}.conf
<VirtualHost 172.16.52.1:80>
ServerName www1.magedu.com
DocumentRoot "/data/vhosts/www1"
CustomLog logs/www1/www1.access_log combined
ErrorLog  logs/www1/www1.error_log
</VirtualHost>
<VirtualHost 172.16.52.1:80>
ServerName www2.magedu.com
DocumentRoot "/data/vhosts/www2"
CustomLog logs/www2/www2.access_log combined
ErrorLog logs/www2/www2.error_log
</VirtualHost>

3.3 检查并重载

httpd -t

service httpd reload

3.4 测试

[[email protected] httpd]# tail -2 /etc/hosts
172.16.52.1 www1.magedu.com
172.16.52.1 www2.magedu.com
[[email protected] httpd]# curl www1.magedu.com
<h1>www1 Page www1.magedu.com</h1>
[[email protected] httpd]# curl www2.magedu.com
web2 page www2.magedu.com


基于用户的访问控制



 1. basic基于用户认证配置

1.1 定义安全域

[[email protected] conf]# cat ../conf.d/vhosts1.conf 
<VirtualHost 172.16.52.1:80>
    ServerName www1.magedu.com
    DocumentRoot "/data/vhosts/www1"
    CustomLog logs/www1/www1.access_log combined
    ErrorLog  logs/www1/www1.error_log
    <Directory "/data/vhosts/www1">
         Options None
         AllowOverride None
         AuthType Basic
         AuthName "For Administrators"
         AuthUserFile "/etc/httpd/conf/.htpasswd"
         Require user tom 
    </Directory>
</VirtualHost>

说明:  <Directory ""> </Directory> 也可以配置在httpd.conf中

1.2 提供账号和密码存储(文本文件)

[[email protected] conf]# htpasswd -c -m /etc/httpd/conf/.htpasswd tom
New password: 
Re-type new password: 
Adding password for user tom
[[email protected] conf]# htpasswd -m /etc/httpd/conf/.htpasswd jack
New password: 
Re-type new password: 
Adding password for user jack

1.3 检查并重载

1.4 测试

2. basic基于组账号认证配置

    2.1 定义安全域

[[email protected] ~]# vim /etc/httpd/conf.d/vhosts1.conf      
<VirtualHost 172.16.52.1:80>
    ServerName www1.magedu.com
    DocumentRoot "/data/vhosts/www1"
    CustomLog logs/www1/www1.access_log combined
    ErrorLog  logs/www1/www1.error_log
    <Directory "/data/vhosts/www1">
        Options None
        AllowOverride None
        AuthType Basic
        AuthName "For Administrators"
        AuthUserFile "/etc/httpd/conf/.htpasswd"
        AuthGroupFile "/etc/httpd/conf/.htgrp"
        Require group mygroup
    </Directory>
</VirtualHost>

说明:  <Directory ""> </Directory> 也可以配置在httpd.conf中

2.2 创建用户账号和组账号文件

[[email protected] conf]# cat .htgrp 
mygroup:tom jack

2.3 检查并重载

2.4 测试

时间: 2024-10-20 10:18:05

httpd虚拟主机配置及基于用户的访问控制的相关文章

apache httpd 虚拟主机配置(基于centos 7)

虚拟主机--在一台www服务器上运行多个网站 前提条件 正确安装httpd 主机IP:192.168.0.225 防火墙关闭(或者已经开放相应端口) 分别在www目录下新建两个目录:mkdir god.com hell.com,并分别在god.com和hell.com的目录下新建index.html文件如下 god.com目录下的index.html <html> <head>hell</head> <br></br> <body>

web服务之httpd虚拟主机配置你造吗?

一.httpd虚拟主机的分类 1.基于ip地址的虚拟主机 2.基于端口的虚拟主机 3.基于域名的虚拟主机 二.配置虚拟主机 实验环境:centos6,使用Yum安装的httpd服务 准备工作:注释中心主机的DocumentRoot站点根目录,创建/etc/httpd/conf.d/vhosts.conf配置文件,创建实验需的站点目录: mkdir -pv /www/{a.com,b.net,c.org}/htdocs,每次修改配合文件时检查语法:httpd -t   重启服务:service h

CentOS 7运维管理笔记(6)----Apache 基于 IP 的虚拟主机配置

Apache 配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置.本篇随笔记录自己基于IP的虚拟主机配置. 如果同一台服务器有多个IP,可以使用基于IP的虚拟主机配置,将不同的服务绑定在不同的IP上. (1)绑定IP: 在虚拟机中搭建的CentOS 7 服务器的IP被自己设置为了静态IP 192.168.1.210,现在使用ifconfig在同一个网络接口上绑定192.168.1.211~213这三个IP: ifconfig eth0:1 192.1

CentOS7配置httpd虚拟主机

本实验旨在CentOS7系统中,httpd-2.4配置两台虚拟主机,主要有以下要求: (1) 提供两个基于名称的虚拟主机: www1.stuX.com,页面文件目录为/web/vhosts/www1:错误日志为/var/log/httpd/www1/error_log,访问日志为/var/log/httpd/www1/access_log: www2.stuX.com,页面文件目录为/web/vhosts/www2:错误日志为/var/log/httpd/www2/error_log,访问日志为

Apache2.4版本环境下基于虚拟主机、ssl、用户控制

环境说明:此篇博客是基于编译安装httpd2.4博客基础上进行的 一.虚拟主机: 1.1基于host [[email protected] apache]# vim/etc/httpd24/httpd.conf Include/etc/httpd24/extra/httpd-vhosts.conf   #开启虚拟主机 #DocumentRoot"/www/htdocs"    #将中心主机注释掉 [[email protected] apache]# cd/etc/httpd24/ex

CentOS 7运维管理笔记(7)----Apache基于域名的虚拟主机配置

使用基于域名的虚拟主机配置是比较流行的方式,可以在同一个IP上配置多个域名并且都通过80端口访问. (1) 在网卡 eth0的第五个接口上配置 192.168.1.215 这个地址: (2) 配置/etc/hosts文件,192.168.1.215 对应的域名如下: 做ping测试,保证ip是导通的: (3) 建立虚拟主机存放网页的根目录,并创建首页文件的 index.html 文件 (4)修改 /usr/local/apache2/conf/httpd.conf 文件,使得服务器开始Liste

CentOS 7运维管理笔记(6)----Apache 基于端口的虚拟主机配置

如果一台服务器只有一个IP或需要通过不同的端口访问不同的虚拟主机,可以使用基于端口的虚拟主机配置. (1) 在虚拟机的CentOS7服务器上配置 eth0:4 为192.168.1.214: (2) 配置 /etc/hosts文件以方便测试: 进行ping测试,看ip地址有没有导通: (3) 建立虚拟主机存放网页的根目录,并建立首页文件 index.html (4) 修改 /usr/local/apache2/conf/httpd.conf 文件,在文件末尾添加以下内容: Listen 192.

httpd 基于用户的访问控制的配置

当我们在网站的某些特定目录放置了比较私密的信息,而又只想提供给我们信任的指定用户访问,这时就需要使用httpd的基于用户访问控制,其能帮你实现只有通过认证的用户才能被允许访问特定的资源,从而大大提高了网站的安全性. 一.httpd基于用户的访问控制简介 基于用户的访问控制包含认证和授权两个过程:        认证(Authentication)是指识别用户身份的过程        授权(Authorization)是允许特定用户访问特定区域信息的过程. Apache的认证包含基本认证(Basi

Apache基于域名、端口、IP的虚拟主机配置(Centos 6.5)

虚拟主机:部署多个站点,每个站点,希望用不同的域名和站点目录,或者是不同的端口,不同的ip,需要虚拟主机功能.一句话,一个http服务要配置多个站点,就需要虚拟主机. 虚拟主机分类:基于域名.基于端口.基于ip:所谓的基于**,就是靠**来区分不同的站点,支持各种混合,N多个虚拟主机. 基于端口的虚拟主机配置如下: 创建环境: 站点目录 域名 /var/html/blog blog.bqh123.com /var/html/bbs bbs.bqh123.com [[email protected