企业常用Centos 7.4 --虚拟主机基于域名,端口,IP,Apache访问控制

构建虚拟主机

一共支持三种虚拟主机类型
企业常用的是第一种基于域名的虚拟主机
基于IP地址的虚拟主机,一台物理主机上需要两个网卡
基于端口的虚拟主机

构建虚拟主机之基于域名

环境需求:一台linux作为DNS和web服务器,一台WIN10客户端作为测试

在我们的Linux先装两个 软件包

[[email protected] ~]# yum install bind httpd -y
已安装:
  bind.x86_64 32:9.11.4-9.P2.el7       httpd.x86_64 0:2.4.6-90.el7.centos      

作为依赖被安装:
  apr.x86_64 0:1.4.8-5.el7
  apr-util.x86_64 0:1.5.2-6.el7
  bind-export-libs.x86_64 32:9.11.4-9.P2.el7
  httpd-tools.x86_64 0:2.4.6-90.el7.centos
  mailcap.noarch 0:2.1.41-2.el7                                                 

作为依赖被升级:
  bind-libs.x86_64 32:9.11.4-9.P2.el7
  bind-libs-lite.x86_64 32:9.11.4-9.P2.el7
  bind-license.noarch 32:9.11.4-9.P2.el7
  bind-utils.x86_64 32:9.11.4-9.P2.el7
  dhclient.x86_64 12:4.2.5-77.el7.centos
  dhcp-common.x86_64 12:4.2.5-77.el7.centos
  dhcp-libs.x86_64 12:4.2.5-77.el7.centos                                    

配置DNS主配置文件

需要改两处
[[email protected] ~]# vim /etc/named.conf
options {
        listen-on port 53 { any; };    //监听所有地址
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };   //允许其他所有主机可以进行解析

配置DNS区域配置文件

我们加入两个需要解析的域名区域配置
在正向解析上复制5行
[[email protected] ~]# vim /etc/named.rfc1912.zones
zone "accp.com" IN {    //你需要解析的域名
        type master;
        file "accp.com.zone";    //区域数据配置文件
        allow-update { none; };
};

zone "kgc" IN {
        type master;
        file "kgc.com.zone";
        allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {

配置DNS区域数据配置文件

[[email protected] ~]# cd /var/named/
[[email protected] named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
 [[email protected] named]# cp -p named.localhost accp.com.zone  //把模板复制到数据区域配置文件中
[[email protected] named]# vim accp.com.zone  //配置

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www IN  A       192.168.136.136  //添加域名解析的地址

[[email protected] named]# cp -p accp.com.zone kgc.com.zone
 //这个只要复制过来不需要过来,我们是基于不同的域名解析

开启服务

[[email protected] named]# systemctl stop firewalld.service
[[email protected] named]# setenforce 0
[[email protected] named]# systemctl start named

到win10客户端去测试能不能解析到地址

添加虚拟主机子配置文件,不要写在主配置文件中,系统加载会变慢。

[[email protected] named]# cd /etc/httpd/
[[email protected] httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[[email protected] httpd]# cd conf
[[email protected] conf]# ls
httpd.conf  magic
[[email protected] conf]# mkdir extra    //创建一个扩展的文件夹,里面放入子配置文件,方便我们以后管理
[[email protected] conf]# ls
extra  httpd.conf  magic
[[email protected] conf]# cd extra/

配置子配置文件

[[email protected] extra]# vim vhost.conf
<VirtualHost *:80>  //标签虚拟主机 ,*代表所有网络
  DocumentRoot "/var/www/html/accp/"  //指定站点
  ServerName www.accp.com  //定义域名
  ErrorLog "logs/www.accp.com.error_log"  //网址要有日志文件,错误日志文件
  Customlog "logs/www.accp.com.access_log" common  //访问日志文件
  <Directory "/var/www/html">  //站点需要设置权限,让所有网络能访问这个网页
        Require all granted
  </Directory>
</VirtualHost>  //结尾标签

<VirtualHost *:80>
  DocumentRoot "/var/www/html/kgc/"
  ServerName www.kgc.com
  ErrorLog "logs/www.kgc.com.error_log"
  Customlog "logs/www.kgc.com.access_log" common
  <Directory "/var/www/html">
        Require all granted
  </Directory>
</VirtualHost>
~                                           

在站点下创建两个默认网页

[[email protected] httpd]# cd /var/www/html
[[email protected] html]# mkdier accp kgc  //创建两个站点目录
[[email protected] html]# mkdir accp kgc
[[email protected] html]# ls
accp  kgc
[[email protected] html]# cd accp
[[email protected] accp]# vim index.html  //编辑网页写入内容

h1>this is accp web</h1>
[[email protected] accp]# cd ../kgc/
[[email protected] kgc]# vim index.html

<h1>this is kgc web</h1>

在主配置文件中调用子配置文件

[[email protected] kgc]# cd /etc/httpd/
[[email protected] httpd]# cd conf
[[email protected] conf]# ls
extra  httpd.conf  magic
[[email protected] conf]# vim httpd.conf

#Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
Include conf/extra/vhost.conf   //调用子配置文件

启用web服务,并去win10客户端去测试能不能基于不同域名获得网页


虚拟主机之基于端口

子配置文件中在创建一个基于端口的虚拟主机

[[email protected] conf]# cd extra/
[[email protected] extra]# vim vhost.conf 

 22 <VirtualHost *:8080>  //端口加上8080
 23   DocumentRoot "/var/www/html/kgc.port/"
 24   ServerName www.kgc.port.com
 25   ErrorLog "logs/www.kgc.port.com.error_log"
 26   Customlog "logs/www.kgc.port.com.access_log" common
 27   <Directory "/var/www/html">
 28         Require all granted
 29   </Directory>
 30 </VirtualHost>

到站点目录下,做一个端口的默认网页

[[email protected] extra]# cd /var/www/html/
[[email protected] html]# ls
accp  kgc
[[email protected] html]# mkdir kgc.port
[[email protected] html]# cd kgc.port/
[[email protected] kgc.port]# vim index.html

<h1>this is kgc.port web</h1>
~                                 

在主配置文件中开启加入个监听地址

[[email protected] kgc.port]# vim /etc/httpd/conf/httpd.conf 

Listen 192.168.136.136:80
Listen 192.168.136.136:8080
#Listen 80

开启服务,查看端口有没有被提供出来

[[email protected] kgc.port]# systemctl restart httpd
[[email protected] kgc.port]# netstat -ntap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd
tcp        0      0 192.168.136.136:8080    0.0.0.0:*               LISTEN      59009/httpd
tcp        0      0 192.168.136.136:80      0.0.0.0:*               LISTEN    

用客户端win10测试基于端口的不同访问网页

80端口还是原来的网页

虚拟主机之基于IP

添加一块网卡

[[email protected] ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.136.136  netmask 255.255.255.0  broadcast 192.168.136.255
        inet6 fe80::e3c7:14af:6e4d:7216  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c9:dd:05  txqueuelen 1000  (Ethernet)
        RX packets 101  bytes 10639 (10.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 113  bytes 12291 (12.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.136.138  netmask 255.255.255.0  broadcast 192.168.136.255
        inet6 fe80::658e:4c2d:2273:9cf5  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c9:dd:0f  txqueuelen 1000  (Ethernet)
        RX packets 108  bytes 14566 (14.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 42  bytes 5695 (5.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

到子配置文件中开始配置

[[email protected] ~]# cd /etc/httpd/conf/extra/
[[email protected] extra]# ls
vhost.conf
[[email protected] extra]# vim vhost.conf 


<VirtualHost 192.168.136.138:80>  //“*”改成第二块网卡的地址
  2   DocumentRoot "/var/www/html/accp/"
  3   ErrorLog "logs/www.accp.com.error_log"
  4   Customlog "logs/www.accp.com.access_log" common
  5   <Directory "/var/www/html">
  6         Require all granted
  7   </Directory>
  8 </VirtualHost>
  9
 10
 11 <VirtualHost 192.168.136.136:80>  //改成第一块网卡的地址
 12   DocumentRoot "/var/www/html/accp02/"  //重新在站点下写一个网页
 13   ErrorLog "logs/www.accp02.com.error_log"
 14   Customlog "logs/www.accp02.com.access_log" common
 15   <Directory "/var/www/html">
 16         Require all granted
 17   </Directory>
 18 </VirtualHost>
 19  

到站点下创建一个网页内容

[[email protected] extra]# cd /var/www/html/
[[email protected] html]# mkdir accp02
[[email protected] html]# cd accp02
[[email protected] accp02]# vim index.html

<h1>this is 136 accp02 web</h1>
~
~
~                               

[[email protected] accp02]# vim ../accp/index.html
<h1>this is 128 accp web</h1>
~
~
~           

在主配置文件中增加监听138的地址,开启服务

#prevent Apache from glomming onto all bound IP addresses.
Listen 192.168.136.136:80
Listen 192.168.136.138:80
#Listen 192.168.136.136:8080
#Listen 80

[[email protected]localhost extra]# systemctl status httpd

去客户端测试一下,记得我们之前给客户端指定的dns解析地址弄到自动获取,不然你的客户端无法上网,无法访问网址

Aapache访问权限控制(客户机权限控制)

到子配置文件,也叫容器,当中做客户机访问权限控制,像当于黑白名单,这个容器,系统的所有命令都会去实现,不会像ACL访问控制列表从上到下逐条匹配识别命令。

[[email protected] ~]# cd /etc/httpd/conf/extra/
[[email protected] extra]# ls
vhost.conf
[[email protected] extra]# vim vhost.conf 

<VirtualHost 192.168.136.138:80>
  DocumentRoot "/var/www/html/accp/"
  ErrorLog "logs/www.accp.com.error_log"
  Customlog "logs/www.accp.com.access_log" common
  <Directory "/var/www/html">
        <RequireAll>   //要加入子容器的标签
          Require not ip 192.168.136.137  //拒绝这个地址访问,也可以拒绝网段比如 Require not ip 192.168.136.0/24
          Require all granted
        </RequireAll>  //结尾标签
  </Directory>
</VirtualHost>
[[email protected] extra]# systemctl restart httpd  //重启服务

到客户端去测试一下

因为做了访问控制所以,只能访问web服务的默认网站

用户登录访问控制

[[email protected] extra]# cd /etc/httpd/conf
[[email protected] conf]# htpasswd -c /etc/httpd/conf/pwd chen01 //创建一个chen01用户,放在路径底下,起个名字pwd. htpasswd:用YUM安装直接可以使用,如果手工编译安装,要把这个命令加到/usr/local/bin系统识别的命令底下。
New password:   //输入你的密码
Re-type new password:   //重复输入
Adding password for user chen01
[[email protected] conf]# ls
extra  httpd.conf  magic  pwd
[[email protected] conf]# cat pwd
chen01:$apr1$lOLJMVUo$EZ7qupc1bHN3k38OUw/1F.
[[email protected] conf]# htpasswd /etc/httpd/conf/pwd chen02  //如果这个目录已存在,就不要加-c了
New password:
Re-type new password:
Adding password for user chen02
[[email protected] conf]# cat pwd
chen01:$apr1$lOLJMVUo$EZ7qupc1bHN3k38OUw/1F.
chen02:$apr1$5cbb6tpU$mt5EZG/8y7qXhyi1Pz2Lk1
[[email protected] conf]# 

添加到容器当中指定某个IP用户登录访问控制

[[email protected] extra]# vim vhost.conf 

<VirtualHost 192.168.136.136:80>
  DocumentRoot "/var/www/html/accp02/"
  ErrorLog "logs/www.accp02.com.error_log"
  Customlog "logs/www.accp02.com.access_log" common
  <Directory "/var/www/html">
        AuthName "DocumentRoot"  //声明信息
        AuthType Basic  //验证类型为基本验证
        AuthUserFile /etc/httpd/conf/pwd //验证文件,目录位置
        Require valid-user  //授权给用户登录
  </Directory>
</VirtualHost>
[[email protected] extra]# systemctl restart httpd

去客户机测试一下用户登录访问控制

以上就是我们所有的内容了,谢谢大家收看

原文地址:https://blog.51cto.com/14449524/2444612

时间: 2024-10-09 17:34:02

企业常用Centos 7.4 --虚拟主机基于域名,端口,IP,Apache访问控制的相关文章

Nginx虚拟主机 (基于域名 基于端口 基于ip)

Nginx虚拟主机 基于域名的虚拟主机 基于IP地址的虚拟主机 基于端口的虚拟主机 一,安装DNS域名解析服务器 1,安装bind服务器 [[email protected] ~]# yum install bind -y 2,修改主配置文件(named.conf) [[email protected] ~]# vim /etc/named.conf options { listen-on port 53 { any; }; ##监听所有 listen-on-v6 port 53 { ::1;

构建虚拟主机——基于域名,端口,IP

虚拟web主机 在同一台物理服务器中运行多个web站点,其中每一个站点并不独立占用一台真正的计算机 httpd支持的虚拟主机类型 * 基于域名的虚拟主机 * 基于IP地址的虚拟主机 * 基于端口的虚拟主机 案例一--基于域名 构建2个虚拟web站点 www.accp.com ip地址为本机地址 www.kgc.com ip地址为本机地址 在浏览器中访问这两个域名时,分别显示不同的内容 实验环境 一台Linux主机做服务器一台win7主机做测试 1,安装http和dns服务 [[email pro

linux企业常用服务---部署NGINX虚拟主机

部署前准备: 光盘配置本地yum源,修改yum配置文件 防火墙和selinux不做设置,关掉 IP地址设置为192.168.100.222 nginx已安装完成 1.安装安装并配置dns: 安装dns: [[email protected] ~]# yum install bind-utils bind bind-chroot 配置: [[email protected] ~]# cd /var/named/chroot/etc/ 配置主文件: [[email protected] etc]#

构建虚拟主机——基于域名

虚拟Web主机 1.在同一台物理服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机2.httpd支持的虚拟主机类型●基于域名的虚拟主机(常用.企业用)●基于IP地址的虚拟主机(一台主机上至少2个IP,不实用)●基于端口的虚拟主机 三种类型 : 不同IP.不同的端口.不同的域名 实验配置 开启一台Linux.一台win7主机1.设置dns主配置文件2.设置dns区域配置文件3.设置dns区域数据配置文件(1)给kgc.com.zone配置数据内容(2)给kgc02.com.zo

nginx篇最初级用法之三种虚拟主机基于域名\基于端口\基于IP地址端口的虚拟主机

在nginx中虚拟主机的类型与apache一样也有三种 1.基于域名的虚拟主机 2.基于端口的虚拟主机 3.基于IP地址端口的虚拟主机 在nginx配置文件中每一个server为一个虚拟主机如果需要多个虚拟主机只需要添加server即可例如 server{ listen 80; server_name www.lqinghua.com   //基于域名的虚拟主机 location / { root def; index index.html; } } server{ listen 8080;  

搭建nginx虚拟主机——基于域名、端口和IP

Nginx支持的虚拟主机有三种 1.基于域名的虚拟主机2.基于IP的虚拟主机3.基于端口的虚拟主机且每一种虚拟主机均可通过"server{}" 配置段实现各自的功能 一.基于域名搭建 1.编译安装Nginx服务2.远程获取Windows上的源码包,并挂载到Linux上 [[email protected] ~]# smbclient -L //192.168.235.1 Enter SAMBA\root's password: Sharename Type Comment ------

Nginx配置——虚拟主机基于IP,域名,端口(实战!)

Nginx虚拟主机 基于域名的虚拟主机 基于IP地址的虚拟主机 基于端口的虚拟主机 一,安装DNS域名解析服务器 1,安装bind服务器 [[email protected] ~]# yum install bind -y 2,修改主配置文件(named.conf) [[email protected] ~]# vim /etc/named.conf options { listen-on port 53 { any; }; ##监听所有 listen-on-v6 port 53 { ::1;

nginx学习笔记之基于端口的虚拟主机基于主机名的虚拟主机root、alias、index配置

nginx学习笔记之基于端口的虚拟主机基于主机名的虚拟主机root.alias.index配置 实验环境: centos 测试节点IP:172.16.3.101 基于端口的虚拟主机: vim /etc/nginx/nginx.conf # 向里面的http {}里面加入如下内容   server { # server定义一个虚拟主机         listen 8080; # 监听本机所有IP端口8080         server_name www.test.com; # 虚拟主机名为:w

nginx配置虚拟主机之不同端口和不同IP地址

配置nginx虚拟主机不同端口和不同ip地址,和上编nginx基于域名配置虚拟主机博文类似,请先参考. zxl.com域名不同端口,配置文件内容如下: [[email protected] conf.d]# cat zxl.com.conf  server { listen 81; server_name www.zxl.com zxl.com; location / { root /data/zxl; index index.html index.htm; access_log  logs/z