Apache 配置与应用

news2024/11/23 19:14:11

目录

  • 构建虚拟 Web 主机
  • 基于域名的虚拟主机
    • 1.为虚拟主机提供域名解析
    • 2.为虚拟主机准备网页文档
    • 3.添加虚拟主机配置
    • 4.设置访问控制
    • 5.加载独立的配置文件
    • 6.在客户机中访问虚拟 Web 主机
  • 基于IP地址的虚拟主机
  • 基于端口的虚拟主机
  • Apache 连接保持
  • 构建Web虚拟目录与用户授权限制
    • Web虚拟目录(别名目录)
    • 1.创建用户认证数据文件
    • 2.添加用户授权配置
    • 3.验证用户访问授权
  • Apache 日志分割


构建虚拟 Web 主机

虚拟Web主机指的是在同一台服务器中运行多个Web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”Web 主机。通过虚拟 Web 主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。

使用httpd服务可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的Web站点。Apache虚拟主机相当于一个在同一台服务器中却相互独立的站点,从而实现一台主机对外提供多个 web 服务,每个虚拟主机之间是独立的,互不影响的。

httpd服务支持的虚拟主机类型包括以下三种:

1.基于域名:为每个虚拟主机使用不同的域名,但是其对应的 IP 地址是相同的。例如,www.benet.com 和 www.accp.com 站点的 IP 地址都是 192.168.154.10。这是使用最为普遍的虚拟 Web 主机类型。

2.基于IP地址:为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同。这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。

3.基于端口:这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用了不同的TCP端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。

基于域名的虚拟主机

1.为虚拟主机提供域名解析

方法一:部署DNS域名解析服务器 来提供域名解析
DNS脚本:

#!/bin/bash
read -p "请输入你要解析的域名:" FQDN
read -p "请输入你要解析的IP地址:" LAN_IP
DOMAIN=${FQDN#*.}
HOSTNAME=${FQDN%%.*}

mount /dev/sr0 /mnt &> /dev/null
rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm &> /dev/null
cp /etc/named.conf{,.bak}
sed -i -e '13 s/127.0.0.1/any/' -e '19 s/localhost/any/' /etc/named.conf
cp /etc/named.rfc1912.zones{,.bak}
sed -i '24 a zone "'$DOMAIN'" IN {\n\ttype master;\n\tfile "'${DOMAIN}'.zone";\n\tallow-update { none; };\n};\n' /etc/named.rfc1912.zones
cp -p /var/named/named.localhost /var/named/${DOMAIN}.zone
sed -i -e '2 s/rname.invalid./admin/' -e '9 s/127.0.0.1/'$LAN_IP'/' -e '$a '$HOSTNAME' IN A '$LAN_IP'' -e '10d' /var/named/${DOMAIN}.zone

systemctl restart named
echo "nameserver $LAN_IP" > /etc/resolv.conf
echo '--------------------------------------'
echo "nslookup $FQDN"
nslookup $FQDN

vim /etc/named.rfc1912.zones #添加benet
cd /var/named
cp -p accp.com.zone benet.com.zone
systemctl restart named

在这里插入图片描述

在这里插入图片描述

方法二:在/etc/hosts 文件中临时配置域名与IP地址的映射关系
echo “192.168.80.10 www.benet.com” >> /etc/hosts
echo “192.168.80.10 www.accp.com” >> /etc/hosts

2.为虚拟主机准备网页文档

mkdir -p /var/www/html/benet
mkdir -p /var/www/html/accp
echo "<h1>this is accp test web!</h1>" > /var/www/html/accp/index.html
echo "<h1>this is benet test web!</h1>" > /var/www/html/benet/index.html

3.添加虚拟主机配置

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #源码编译安装的虚拟主机配置文件路径
#vim /etc/httpd/conf.d/vhosts.conf #RPM或YUM安装的虚拟主机配置文件路径

<VirtualHost 192.168.154.10:80>				    	#设置虚拟主机配置区域
#ServerAdmin webmaster@dummy-host.example.com		#设置管理员邮箱,这行可忽略
    DocumentRoot "/var/www/html/benet"				#设置网站根目录
    ServerName www.benet.com						#设置Web站点的完整域名(主机名+域名)
#ServerAlias www.dummy-host.example.com
    ErrorLog "logs/benet.com-error_log"				#设置错误日志文件的路径
    CustomLog "logs/benet.com-access_log" common	#设置访问日志文件的路径
</VirtualHost>

<VirtualHost 192.168.154.10:80>					
    DocumentRoot "/var/www/html/accp"			
    ServerName www.accp.com					
    ErrorLog "logs/accp.com-error_log"			
    CustomLog "logs/accp.com-access_log" common
</VirtualHost>

在这里插入图片描述

4.设置访问控制

vim /usr/local/httpd/conf/httpd.conf #复制以下的代码到httpd-vhosts.conf文件里

在这里插入图片描述

<Directory "/var/www/html"> 								#设置目录访问权限
	Options None											#不启用任何的服务器特性
	AllowOverride None										#不允许重写Apache默认配置	
	Require all granted										#允许所有主机访问
</Directory>

在这里插入图片描述

Options指令解释:
Options指令的主要作用是控制特定目录将启用哪些服务器特性。可以在Apache服务配置文件的虚拟主机配置(VirtualHost)、特定目录配置(Directory)以及.htaccess文件中使用。
Options指令常用选项:
None:表示不启用任何的服务器特性。
FollowSymLinks:服务器允许在此目录中使用符号连接(软链接)。
Indexes:如果输入的网址对应服务器上的一个文件目录,而此目录中又没有Apache配置文件中的DirectoryIndex指令指定的文件(例如: DirectoryIndex index.html index.php),则列出该目录下的所有文件。
MultiViews:如果客户端请求的路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件。例如,在服务器站点的file文件夹下中存在名为hello.jpg和hello.html的两个文件,此时用户输入 http://localhost/file/hello ,如果在 file文件夹下并没有 hello子目录,那么服务器将会尝试在 file目录下查找形如 hello.*的文件,然后根据用户请求的具体情况返回最匹配要求的 hello.jpg或者 hello.html。
All:表示除 MultiViews之外的所有特性。这也是Options指令的默认设置。

AllowOverride指令解释:
.htaccess(分布式隐含配置文件):提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含特定指令的文件,其中的指令作用于此目录及其所有子目录。
当AllowOverride设置成None时,相应的配置目录下的.htaccess文件是不被读取的,即无法生效。
当AllowOverride设置成All时,每一次请求访问相应目录下的文件时,都会读取.htaccess文件的配置,意味着原Apache指令会被.htaccess文件中的指令重写。
从性能和安全性考虑,一般都尽可能避免使用.htaccess文件,任何希望放在.htaccess文件中的配置,都可放在主配置文件(httpd.conf)的 <Directory>段中,而且高效。因此AllowOverride属性一般都配置成None 。

地址限制策略:
Require all granted:允许所有主机访问。
Require all denied:拒绝所有主机访问。
Require local:仅允许本地主机访问。
Require [not] host <主机名或域名列表>:允许或拒绝指定主机或域名访问。
Require [not] ip <IP 地址或网段列表>:允许或拒绝指定 IP 地址网络访问。

5.加载独立的配置文件

vim /usr/local/httpd/conf/httpd.conf #源码编译安装的httpd服务主配置文件路径
–483行–取消注释
Include conf/extra/httpd-vhosts.conf #加载独立的配置文件

#vim /etc/httpd/conf/httpd.conf #RPM或YUM安装的httpd服务主配置文件路径
IncludeOptional conf.d/*.conf #最后一行已默认开启此项

systemctl restart httpd

在这里插入图片描述

6.在客户机中访问虚拟 Web 主机

http://www.benet.com
http://www.accp.com
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于IP地址的虚拟主机

ifconfig ens33:0 192.168.154.130/24
ifconfig ens33:0 192.168.154.131/24

在这里插入图片描述

vim /usr/local/httpd/conf/httpd.conf
–53行–插入
Listen 192.198.154.130:80
Listen 192.198.154.131:80

在这里插入图片描述

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

在这里插入图片描述

systemctl restart httpd

在客户机中浏览器访问虚拟 Web 主机
http://192.168.154.130
http://192.168.154.131
在这里插入图片描述

在这里插入图片描述

基于端口的虚拟主机

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

在这里插入图片描述

vim /usr/local/httpd/conf/httpd.conf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Apache 连接保持

vim /usr/local/httpd/conf/extra/httpd-default.conf

KeepAlive On
#设置是否打开连接保持功能,后面接OFF表示关闭,接ON表示打开。可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高时关闭此功能。

MaxKeepAliveRequests 100
#用于设置在一次长连接中可以传输的最大请求数量,超过此最大请求数量就会断开连接,最大值的设置决定于网站中网页的内容,一般设置数量会多于网站中所有的元素。

KeepAliveTimeout 5
#设置来自同一个客户端一次连接多次请求之间的最大间隔时间,即两次请求之间超过该时间连接就会自动断开,从而避免客户端占用连接资源。

构建Web虚拟目录与用户授权限制

Web虚拟目录(别名目录)

vim /var/www/html/
mkdir test

在这里插入图片描述

vim /usr/local/httpd/conf/httpd.conf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.创建用户认证数据文件

cd /usr/local/httpd/bin
./htpasswd -c /usr/local/httpd/conf/user zhangsan
./htpasswd /usr/local/httpd/conf/user lisi
#-c选项表示新建用户数据文件,缺省时则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码。

cat /usr/local/httpd/conf/user #确认用户数据文件

在这里插入图片描述

在这里插入图片描述

2.添加用户授权配置

vim /usr/local/httpd/conf/httpd.conf

在这里插入图片描述

3.验证用户访问授权

在客户机中浏览器访问

在这里插入图片描述

在这里插入图片描述

Apache 日志分割

使用Apache 自带 rotatelogs 分割工具,将 Apache 的日志进行按每天的日期自动分割。

vim /usr/local/httpd/conf/httpd.conf
–275行–修改
ErrorLog “| /usr/local/bin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400” #分割错误日志
–305行–修改
CustomLog “| /usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400” combined #分割访问日志

#开头的 | 为管道符号。
#-l选项表示使用本地时间为时间基准。
#86400表示一天,即每天生成一个新的日志文件。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417367.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于html+css的盒子展示3

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

[ 应急响应基础篇 ] 使用 Process Explorer 进程分析工具分析系统进程(附Process Explorer安装教程)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

《C Primer Plus》第17章复习题与编程练习

《C Primer Plus》第17章复习题与编程练习复习题1. 定义一种数据类型涉及哪些内容&#xff1f;2. 为什么程序清单17.2只能沿一个方向遍历链表&#xff1f;如何修改struct film定义才能沿两个方向遍历链表&#xff1f;3. 什么是ADT&#xff1f;4. QueueIsEmpty()函数接受一个指向…

OpenAI创始人:GPT-4的研究起源和构建心法

OneFlow编译 翻译&#xff5c;杨婷、贾川、徐佳渝 三十年前&#xff0c;互联网&#xff08;Web 1.0&#xff09;时代开启。人们只能在笨重的电脑上用鼠标点击由HTML编写的网页文本&#xff0c;随后开始支持插入图片&#xff0c;可以上传视频&#xff0c;于是有了网络新闻、搜索…

MapReduce之WordCount案例实操

目录 前期准备&#xff1a; 本机测试&#xff1a; mapper阶段&#xff1a; Reduce阶段&#xff1a; Driver类&#xff1a; 集群测试&#xff1a; 前期准备&#xff1a; 因为MapReduce中案例比较多&#xff0c;所以需要单独创建一个工程 准备工作 创建工程后先改maven仓…

ssh远程端口转发

ssh远程转发的原理&#xff1a;内网主机开了一个程序去连接外网的服务器&#xff0c;一直等待外网的服务器来连接。 应用场景 设备 IP 备注 系统 内网电脑C 192.168.10.129 内网&#xff0c;可访问外网。SSH登陆端口为22。 linux 个人电脑A 动态变化 无公网IP Linux…

Java的Idea怎么用ChatGpt,让些代码变丝滑?

发现两款idea的AI插件神器&#xff0c;和一个AI编辑器 1、tabnine https://zhuanlan.zhihu.com/p/343938113 当提示代码出现后&#xff0c;其中 按tab键就可以通用提示出的代码了&#xff0c;alt[ 是换提示代码&#xff0c;试用期限为14天。&#xff08;注意标红的&#xff0…

获美国企业认可,中国大飞机取得重大突破,已具备挑战波音的实力

日前消息指美国通用电气资本航空服务公司订购了20架中国商飞C919客机&#xff0c;这是中国大飞机首次获得美国航空企业的认可&#xff0c;代表着中国大飞机的重大突破&#xff0c;证明中国的大飞机已达到国际先进水平。通用电气资本航空服务公司是全球最大的飞机租赁公司&#…

初学C++,坚决不能挂!

目录 1、C&#xff0b;&#xff0b;相对于C语言的不同 2、类&#xff08;class&#xff09; 3、类与实例&#xff08;对象&#xff09;的关系 4、头文件 5、命名空间 6、输入输出 7、位运算 8、基本数据类型 9、结构体和三目运算符 10、for循环 11、const 12、类型别…

SEEM:微软基于 CV 大模型新作,分割“瞬息全宇宙”

文 | 智商掉了一地交互式视觉分割新作&#xff0c;具有语义感知的新模型~自从 Meta 发布了“分割一切”的 SAM 之后&#xff0c;各种二创如雨后春笋般冒出&#xff0c;昨天微软的一篇论文又在推特上引起讨论&#xff0c;虽然最开始吸引小编的是它的名字——分割“瞬息全宇宙”&…

让技术造福残障人士,让开发助力无障碍

前言 随着互联网技术的快速发展&#xff0c;越来越多的领先技术运用到公益领域中来。运用科技来造福残障人士&#xff0c;比如前几年比较智能化的自动行走轮椅&#xff0c;盲人阅读器&#xff0c;以及聋哑人助听器等&#xff0c;都是通过科技来帮助残障人士方便生活的例子。作为…

OpenAI文档翻译——在不通的场景下如何更好的设计ChatGPT提示词

概述 OpenAI可以被广泛的应用于各种任务&#xff0c;他为各种模型提供使用简单而功能强大的API。你可以输入一些文本作为提示词&#xff0c;OpenAI则会生成对应的提示词补全&#xff0c;在使用过程中这就是会话形式以及能够记住上下文的体现。探索如何生成提示词的最好方法就是…

地图和规则来啦!全国大学生智能汽车竞赛百度创意组正式发布

‍‍「全国大学生智能汽车竞赛」是教育部倡导的大学生科技A类竞赛&#xff0c;是2022年全国普通高校大学生竞赛榜单内竞赛&#xff0c;中国高等教育学会将其列为含金量最高的大学生竞赛之一。在全国数百所高校的支持下&#xff0c;全国大学生智能汽车竞赛至今已成功举办了十七届…

2023AE软件、Adobe After Effects下载、安装教程

最后附下载地址 2023AE软件是一款由Adobe公司开发的视频编辑软件&#xff0c;也被称为Adobe After Effects。它在广告、电影、电视和网络视频等领域广泛应用&#xff0c;用于制作动态图形、特效、合成和其他视觉效果。该软件支持多种视频和音频文件格式&#xff0c;具有丰富的…

一文了解vue3的toRef和toRefs?

文章目录toRef / toRefs首先toRef的使用toRefs的使用&#xff1a;总结reactive定义对象类型<template><h3>姓名&#xff1a;{{ person.name }}</h3><h3>年龄&#xff1a;{{ person.age }}</h3><h3>薪资&#xff1a;{{ person.job.j1.salar…

微软发布了 97 个漏洞的补丁,包括主动勒索软件漏洞

今天是本月的第二个星期二&#xff0c;微软发布了另一组安全更新&#xff0c;修复了影响其软件的97 个漏洞&#xff0c;其中一个漏洞已被广泛用于勒索软件攻击。 97 个错误中有 7 个被评为严重&#xff0c;90 个被评为重要。有趣的是&#xff0c;其中 45 个缺陷是远程代码执行…

抽象简单web

由于js中for循环大致可以包含为 简单的遍历数组 遍历对象的属性 遍历字符串 多层循环 使用 break 和 continue 使用 for...of 遍历数组 使用 forEach 遍历数组 那么由于水平问题&#xff0c;将会一个个精通后才出一图流 简单的遍历数组 在进行实践前&#xff0c;需要简单了解…

Redis 7 事务、管道、发布订阅、主从、哨兵、集群

一、事务 1、简介 可以一次执行多个命令&#xff0c;本质是一组命令的集合。一个事务中的所有命令都会序列化&#xff0c; 按顺序地串行化执行而不会被其他命令插入&#xff0c;不许加塞一个队列中&#xff0c;一次性、顺序性、排他性的执行一系列命令 2、实战 常用命令 正…

(学习日记)2023.4.12

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

在线安装rancher2.4管理K8S集群并部署服务

条件&#xff1a; 1. 准备至少3台机器&#xff1b; 2. 三台机器需要有网络&#xff1b; 3. 安装rancher和K8S集群&#xff1b; # master节点 [rootlocalhost ~]# hostnamectl set-hostname k8s-master && bash [rootk8s-master ~]# hostname k8s-master [rootk8s-ma…