Apache访问控制与虚拟主机

目录

一. Web服务简介

以下是一些 Web 服务的基本概念和特征

以下是一些主流的 Web 服务器

WEB 服务协议

二. Apache 服务的搭建与配置

2.1 Apache 介绍

2.2 Apache安装

2.3 Apache目录介绍

三. 访问控制 

四. 修改默认网站发布目录

 五. 虚拟主机

5.1 基于域名的虚拟主机

5.2 基于端口的虚拟主机

5.3 基于 IP 地址的虚拟主机


一. Web服务简介

Web 服务是一种基于网络的软件系统,它通过标准的网络协议(通常是 HTTP 或 HTTPS)提供服务。这些服务可以是静态的,如提供静态网页或文件,也可以是动态的,如处理用户请求并生成动态内容。

以下是一些 Web 服务的基本概念和特征

  1. HTTP 协议: Web 服务通常使用 HTTP(Hypertext Transfer Protocol)或其安全版本 HTTPS(HTTP Secure)作为通信协议。HTTP 定义了客户端和服务器之间的请求和响应格式,以及状态码和头部信息等规范。

  2. RESTful API: REST(Representational State Transfer)是一种基于 HTTP 协议设计的软件架构风格,用于创建可扩展的 Web 服务。RESTful API 通过定义资源、HTTP 方法和状态码来实现对资源的操作,如 GET(获取)、POST(创建)、PUT(更新)和 DELETE(删除)等。

  3. SOAP: SOAP(Simple Object Access Protocol)是另一种用于构建 Web 服务的协议,它使用 XML 格式来定义消息结构和通信协议。SOAP 比较复杂,通常用于企业级应用和基于 XML 的数据交换。

  4. Web 服务器: Web 服务运行在 Web 服务器上,它可以是专用的服务器软件(如 Apache、Nginx、Microsoft IIS 等),也可以是集成在应用程序中的服务器组件(如 Node.js、Django、Flask 等)。

  5. 动态内容生成: Web 服务可以根据用户请求生成动态内容,通常使用服务器端脚本语言(如 PHP、Python、Ruby 等)处理请求并生成 HTML、JSON 或 XML 等格式的响应。

  6. 扩展性和可伸缩性: 良好设计的 Web 服务具有良好的扩展性和可伸缩性,能够处理大量的并发请求并在需要时进行水平或垂直扩展。

Web 服务在互联网应用开发中起着至关重要的作用,它为用户提供了访问和交互的渠道,并为开发人员提供了构建各种类型应用的基础设施。

以下是一些主流的 Web 服务器

  1. Apache HTTP Server: 通常简称为 Apache,是最流行的开源 Web 服务器软件之一。它具有稳定性高、功能强大、模块化设计等特点,支持多种操作系统,如 Linux、Unix、Windows 等。

  2. Nginx: Nginx 是一款高性能的开源 Web 服务器和反向代理服务器。它的设计目标是解决 C10k 问题(同时连接数超过 10000),具有低内存消耗、高并发处理能力、灵活的配置等优点,被广泛用于构建高性能的 Web 服务。

  3. Microsoft IIS: Internet Information Services(IIS)是由 Microsoft 开发的 Web 服务器软件,用于在 Windows 环境下运行。它集成在 Windows Server 中,支持 ASP.NET、PHP、Node.js 等多种 Web 技术,并提供了强大的管理工具和安全功能。

  4. LiteSpeed Web Server: LiteSpeed 是一款高性能的商业 Web 服务器软件,与 Apache 兼容,但通常比 Apache 更快更稳定。它支持 Apache 的配置文件和模块,提供了缓存、反向代理、负载均衡等功能。

  5. Caddy: Caddy 是一款现代化的开源 Web 服务器,具有自动 HTTPS 部署、HTTP/2 支持、简单的配置等特点。它使用 Go 语言编写,易于部署和管理,适用于各种类型的 Web 应用。

  6. Tomcat: Apache Tomcat 是一个开源的 Java Servlet 容器,用于运行 Java Web 应用。它是 Apache 软件基金会的一个项目,支持 Java Servlet、JavaServer Pages(JSP)等技术,并且可以与 Apache HTTP Server 或 Nginx 结合使用。

这些 Web 服务器各有特点,选择适合自己需求的服务器取决于项目的要求、性能需求、支持的技术栈以及个人偏好等因素。

WEB 服务协议

Web 服务协议是指在 Web 服务中用于通信和数据交换的协议。下面是一些常见的 Web 服务协议:

  1. HTTP(Hypertext Transfer Protocol): HTTP 是 Web 服务中最常用的协议之一,它定义了客户端和服务器之间的通信规范。HTTP 使用请求-响应模型,客户端向服务器发送请求,并接收服务器返回的响应。HTTP 通常用于传输 HTML 页面、图片、样式表等静态资源,以及 JSON 或 XML 格式的数据。

  2. HTTPS(HTTP Secure): HTTPS 是在 HTTP 协议基础上添加了加密和身份验证机制的安全通信协议。它通过使用 SSL/TLS 协议对通信进行加密,保护用户数据的安全性和隐私。HTTPS 在互联网上广泛用于安全性要求较高的网站和应用。

  3. SOAP(Simple Object Access Protocol): SOAP 是一种基于 XML 的通信协议,用于在分布式环境中进行应用程序之间的通信。它定义了 XML 格式的消息结构和通信规范,支持复杂的数据类型和协议扩展。SOAP 主要用于构建企业级应用和 Web 服务。

  4. REST(Representational State Transfer): REST 是一种基于 HTTP 协议设计的软件架构风格,用于构建可扩展的 Web 服务。RESTful API 使用 HTTP 方法(如 GET、POST、PUT、DELETE 等)对资源进行操作,并通过 URI 来唯一标识资源。RESTful API 通常使用 JSON 或 XML 格式来表示资源和交换数据。

  5. GraphQL: GraphQL 是一种用于构建 API 的查询语言和运行时。与传统的 RESTful API 不同,GraphQL 允许客户端定义需要返回的数据结构,以减少网络请求次数和数据传输量。GraphQL 通常使用 HTTP 或 WebSocket 协议进行通信。

这些协议在不同的场景和需求中发挥着重要的作用,开发人员可以根据项目的需求和特点选择适合的协议来实现 Web 服务。

二. Apache 服务的搭建与配置

2.1 Apache 介绍

Apache 是一个开源的跨平台 Web 服务器软件,全称为 Apache HTTP Server。它是目前世界上最流行的 Web 服务器软件之一,由 Apache 软件基金会开发和维护。Apache 以其稳定性、可靠性、灵活性和强大的功能而闻名,被广泛用于搭建各种类型的网站和 Web 应用。

2.2 Apache安装

Apache的主程序名叫httpd

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y httpd
[root@localhost ~# systemctl start httpd
[root@localhost ~]# netstat -lntp | grep 80 #查看apache端口
tcp6       0      0 :::80                   :::*                    LISTEN      2776/httpd#端口80.可以改启动
httpd -k start   或  systemctl start httpd
停止
httpd -k stop    或  systemctl stop httpd
重启
httpd -k restart 或  systemctl restart httpd
index.html:默认访问网站的主页名称
默认发布网站的目录:/var/www/html

2.3 Apache目录介绍

Apache的工作目录:
conf                    存储配置文件
conf.d                 存储配置子文件
logs                    存储日志 
modules             存储模块
run                      存储Pid文件,存放的pid号码。是主进程号

 认识主配置文件/etc/httpd/conf/httpd.conf 

ServerRoot "/etc/httpd"             #定义工作目录
Listen 80                           #监听端口
Listen 192.168.2.8:80 指定监听的本地网卡 可以修改
User apache    					    # 子进程的用户,有可能被人改称www账户
Group apache   						# 子进程的组
ServerAdmin root@localhost  		# 设置管理员邮件地址
DocumentRoot "/var/www/html"        # 发布网站的默认目录,想改改这里。
IncludeOptional conf.d/*.conf       # 包含conf.d目录下的所有*.conf配置文件# 设置DocumentRoot指定目录的属性
<Directory "/var/www/html">   		# 网站容器开始标识
Options Indexes FollowSymLinks   	# 找不到主页时,链接到网站目录以外,如测试页面
AllowOverride None               	# 对网站设置特殊属性:none不设置特殊属性,all允许
Require all granted                 # granted表示允许所有人访问,denied表示拒绝所有人访问
</Directory>    					# 容器结束
DirectoryIndex index.html      		# 定义主页文件,会自动访问该文件。

三. 访问控制 

可以直接编辑apache主配置文件

 修改如下代码,进行特定的访问控制:

#1.允许所有IP访问
#默认情况下不用任何修改就是所有人可以访问
<RequireAll>
Require all granted
</RequireAll>#2.拒绝所有IP访问
<RequireAll>
Require all deined
</RequireAll>#3.拒绝特定IP访问
<RequireAll>
Require not ip 192.168.226.129
Require all granted
</RequireAll>#4.允许特定IP访问
<RequireAll>
Require ip 192.168.226.129
</RequireAll>

四. 修改默认网站发布目录

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf#在119行修改网站根目录为/www
DocumentRoot "/www"  #在131行把这个也对应的修改为/www
<Directory "/www">[root@localhost ~]# mkdir /www                                         #创建定义的网站发布目录
[root@localhost ~]# echo "这是新修改的网站根目录/www" > /www/index.html #创建测试页面
[root@localhost ~]# systemctl restart httpd                            #重启服务

 五. 虚拟主机

        虚拟主机是一种在单个物理服务器上托管多个域名或网站的技术。通过虚拟主机,可以在同一台服务器上运行多个独立的网站,并使它们彼此隔离,就像它们运行在不同的物理服务器上一样。这种技术可以最大程度地利用服务器资源,并提供更灵活和经济高效的解决方案。

5.1 基于域名的虚拟主机

[root@localhost ~]# cd /etc/httpd/conf.d/#创建配置文件 
[root@localhost conf.d]# vim test.conf#修改配置文件为如下内容
# 定义第一个虚拟主机,监听所有地址的80端口  
<VirtualHost *:80>  # 设置此虚拟主机的服务器名称为 www.ceshi.com  ServerName www.ceshi.com  # 设置此虚拟主机的文档根目录为 /var/www/ceshi  DocumentRoot /var/www/ceshi  # 配置对文档根目录的访问权限和指令覆盖  <Directory "/var/www/ceshi">  # 不允许 .htaccess 文件覆盖主配置文件中的指令  AllowOverride None  # 允许所有用户访问此目录  Require all granted  </Directory>  # 结束第一个虚拟主机的配置  
</VirtualHost>  # 定义第二个虚拟主机,监听所有地址的80端口  
<VirtualHost *:80>  # 设置此虚拟主机的服务器名称为 www.luzheng.com  ServerName www.luzheng.com  # 设置此虚拟主机的文档根目录为 /var/www/luzheng  DocumentRoot /var/www/luzheng  # 配置对文档根目录的访问权限和指令覆盖  <Directory "/var/www/luzheng">  # 不允许 .htaccess 文件覆盖主配置文件中的指令  AllowOverride None  # 允许所有用户访问此目录  Require all granted  </Directory>  # 结束第二个虚拟主机的配置  
</VirtualHost>#######################################################################[root@qfedu.com conf.d]# mkdir /var/www/ceshi    
[root@qfedu.com conf.d]# mkdir /var/www/luzheng#创建测试页面
[root@localhost conf.d]# echo "这是个测试页面" > /var/www/ceshi/index.html
[root@localhost conf.d]# echo 'hello word!' > /var/www/luzheng/index.html
#重启服务
[root@localhost conf.d]# systemctl restart httpd

 配置好apache配置文件,最后就要去windows中配置下域名拉

在windows电脑的C:\Windows\System32\drivers\etc这个目录下有个hosts的配置文件新增IP和对应的域名即可,一般要用管理员身份才可以进行编辑修改这个hosts文件。注意你添加的时候要把IP修改成你的电脑的IP。

192.168.226.100 www.ceshi.com
192.168.226.100 www.luzheng.com

 注:如果配置都对的前提下打不开或者打开的不对,就用浏览器的无痕模式,或者切换浏览器尝试即可。

5.2 基于端口的虚拟主机

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf +43#添加监听端口 如下图

[root@localhost ~]# cd /etc/httpd/conf.d/#创建配置文件 
[root@localhost conf.d]# vim test.conf#修改配置文件为如下内容
<VirtualHost *:80>ServerName www.ceshi.comDocumentRoot /var/www/ceshi<Directory "/var/www/ceshi">AllowOverride All            # 允许 .htaccess 文件中的指令覆盖主配置文件中的指令Require all granted</Directory>
</VirtualHost><VirtualHost *:81>ServerName www.luzheng.comDocumentRoot /var/www/luzheng<Directory "/var/www/luzheng">AllowOverride AllRequire all granted</Directory>
</VirtualHost>[root@qfedu.com conf.d]# mkdir /var/www/ceshi    
[root@qfedu.com conf.d]# mkdir /var/www/luzheng#创建测试页面
[root@localhost conf.d]# echo "这是个测试页面" > /var/www/ceshi/index.html
[root@localhost conf.d]# echo 'hello word!' > /var/www/luzheng/index.html
#重启服务
[root@localhost conf.d]# systemctl restart httpd

5.3 基于 IP 地址的虚拟主机

使用ifconfig给一个网卡新增ip

ifconfig ens33:0 192.168.226.200
#这里的ens33:0是网络接口ens33的一个别名(也称为子接口)#取消一个IP
ifconfig ens33:0 192.168.226.200 down

使用ip命令给一个网卡新增ip

ip a a 192.168.226.201/24 dev ens33
ip addr add 192.168.226.201/24 dev ens33 label ens33:1
#这里label ens33:0 是起得一个别名#删除一个IP
ip addr del 192.168.226.201/24 dev ens33

[root@localhost ~]# vim /etc/httpd/conf.d/test.conf<VirtualHost 192.168.226.200:80>ServerName www.ceshi.comDocumentRoot /var/www/ceshi<Directory "/var/www/ceshi">AllowOverride None           # 不允许 .htaccess 文件覆盖主配置文件中的指令Require all granted</Directory>
</VirtualHost><VirtualHost 192.168.226.201:81>ServerName www.luzheng.comDocumentRoot /var/www/luzheng<Directory "/var/www/luzheng">AllowOverride None               Require all granted</Directory>
</VirtualHost>[root@localhost ~]# systemctl restart httpd

可以配置域名解析,也可以不用配域名解析

 如果用域名去访问,记得去windows中删除之前配置得域名,更新成新得IP,如图:

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

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

相关文章

产品经理也要学个PMP证书?

随着互联网行业竞争的加剧&#xff0c;越来越多的互联网公司将产品经理视为重点培养对象。为了提升自身能力&#xff0c;许多产品经理选择考取项目管理专业认证PMP&#xff08;Project Management Professional&#xff09;。那么&#xff0c;PMP对产品经理来说是否真的有帮助呢…

发布订阅模式

一、常见的发布订阅模式 1、Dom的事件 Event addEventListener dispatchEvent //订阅中心 const event new Event(zyk); //订阅 document.addEventListener(zyk, (value)>{console.log(我收到了&#xff1a;, value) }); //发布 document.dispatchEvent(e, 1); docume…

生活服务商家拥抱数字化,鸿运果系统加速“服务生意数字化”进程

在数字化转型的大潮中&#xff0c;生活服务商家正积极拥抱变革&#xff0c;以适应新的市场环境和消费者需求。鸿运果系统作为专业的“服务生意”数字化解决方案提供商&#xff0c;正助力商家加速数字化转型&#xff0c;推动行业向智能化、个性化服务转型。 数字化转型的背景 …

部分树上问题及图的联通性(图论学习总结部分内容)

文章目录 前言三、部分树上问题及图的联通性最小生成树知识点例题 e g 1 : eg1: eg1: 走廊泼水节&#xff08;克鲁斯卡尔思想的灵活运用&#xff09; e g 2 &#xff1a; eg2&#xff1a; eg2&#xff1a; B-Picnic Planning e g 3 eg3 eg3&#xff1a;L - Classic Problem&…

会议发布会展览展会,不用活动如何制定媒体邀约方案?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 在会议、发布会、展览展会等不同活动的情况下&#xff0c;制定媒体邀约方案是非常必要的&#xff0c;因为它可以帮助你有效地传播信息&#xff0c;扩大影响力。以下是一个关于如何制定媒…

深入学习Linux内核之v4l2驱动框架(一)

一&#xff0c;概述 V4L2&#xff08;Video for Linux 2&#xff09;是Linux操作系统中用于支持摄像头和视频设备的框架。它提供了一组API和驱动程序接口&#xff0c;用于在Linux系统中进行视频采集、视频流处理和视频播放等操作。 V4L2的设计目标是支持多种设备&#xff0c;…

游戏中的设计模式一

游戏开发是一个快速迭代的过程&#xff0c;代码复杂度也很高&#xff0c;借助于设计模式&#xff0c;可以帮助我们降低复杂度&#xff0c;降低系统间的耦合&#xff0c;从而高效高质的做出交付。 最近读了这本书&#xff1a;《游戏编程模式》[1]&#xff0c;很受启发&#xff…

win10系统解除微软账户和本地账户绑定

折腾了好久&#xff0c;终于找到一种方法可以退出微软账号了&#xff0c;不过这种方法我测试是成功的&#xff0c;有人留言自己不成功&#xff0c;具体解决方法只能看这些留言了 win10当中没有注销按钮&#xff0c;win x 弹出的菜单里面有关闭或注销&#xff0c;可以选择注销…

最短木板长度 - 贪心思维

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、java代码五、测试用例 前言 本人最近再练习算法&#xff0c;所以会发布自己的解题思路&#xff0c;希望大家多指教 一、题目描述 小明有 n 块木板&#xff0c;第 i ( 1 ≤ i ≤ n ) 块木板长…

NASA数据即——Aqua AIRS 第 3 级光谱出射长波辐射 (OLR) 月报 (AIRSIL3MSOLR)

Aqua AIRS Level 3 Spectral Outgoing Longwave Radiation (OLR) Monthly (AIRSIL3MSOLR) Aqua AIRS 第 3 级光谱出射长波辐射 (OLR) 月报 (AIRSIL3MSOLR) 简介 这个 L3 光谱出射长波辐射&#xff08;OLR&#xff09;是根据密歇根大学黄向磊开发的算法&#xff0c;利用 AIRS…

前端XHR请求数据

axios封装了XHR(XMLHttpRequest) 效果 项目结构 Jakarta EE9&#xff0c;Web项目。 无额外的maven依赖 1、Web页面 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title&…

【JS红宝书学习笔记】第1、2章 初识JS

第1章 什么是JavaScript JavaScript 是一门用来与网页交互的脚本语言&#xff0c;包含以下三个组成部分。 ECMAScript&#xff1a;由 ECMA-262 定义并提供核心功能。文档对象模型&#xff08;DOM&#xff09;&#xff1a;提供与网页内容交互的方法和接口。浏览器对象模型&…

鸿蒙内核源码分析 (内存池管理) | 如何高效切割合并内存块

动态分配 系列篇将动态分配分成上下两篇&#xff0c;本篇为下篇&#xff0c;阅读之前建议翻看上篇。 鸿蒙内核源码分析(TLFS算法) 结合图表从理论视角说清楚 TLFS 算法鸿蒙内核源码分析(内存池管理) 结合源码说清楚鸿蒙内核动态内存池实现过程&#xff0c;个人认为这部分代码…

羊大师分析,羊奶助力共筑健康中国新生活

羊大师分析&#xff0c;羊奶助力共筑健康中国新生活 在健康中国行动的大背景下&#xff0c;我们越来越注重生活方式的健康与营养。羊大师发现&#xff0c;羊奶作为一种营养丰富、易于吸收的天然食品&#xff0c;正逐渐成为我们追求健康生活的得力助手。 羊奶富含优质蛋白质、矿…

vue3自定义指令​(通过指令钩子获得dom和钩子参数)

实现文本框自动获得焦点 Index.vue: <script setup> import { ref, onMounted } from vue import ./index.cssconst vFocus {mounted: (el, binding) > {el.focus()console.log(binding)} }onMounted(() > {}) </script><template><div class&qu…

设计说明-行为型-状态模式-State

状态接口 public interface State {//状态接口void insertQuarter();//投币void ejectQuarter();//退币void turnCrank();//按下“出纸巾”按钮void dispense();//出纸巾 } 有纸巾类 public class HasQuarterState implements State {private TissueMachine tissueMachine;O…

Python中tkinter编程入门4

在Python中tkinter编程入门3-CSDN博客中创建了Button控件&#xff0c;点击该控件就会产生一个点击事件&#xff0c;在创建Button控件时指定该点击事件的处理程序后&#xff0c;按键控件就会对用户的点击事件产生响应。 1 定义事件处理器 定义事件处理器就是一个自定义的函数。…

前端连续发送同一个请求时,终止上一次请求

场景&#xff1a;几个tab页之间快速的切换&#xff08;tab页只是参数不同&#xff0c;下边的数据渲染给同一个data&#xff09;就会导致如果我在1,2,3&#xff0c;tab页按照顺序快速点击&#xff0c;发送三个请求&#xff0c;我想要展示的是3但是如果1或者2请求响应的时间比3长…

Python tensor向量维度转换,不同维度的向量转化为相同的维度,经过全连接层MLP的维度转换,代码实战

问题&#xff1a;在机器学习特征工程中&#xff0c;假如每类特征需要转化为相同的维度进行拼接&#xff0c;那该怎么办呢&#xff1f;接一个全连接层MLP就可以了。 例子&#xff1a;将&#xff08;128,64&#xff09; 维度的向量转化为&#xff08;128,32&#xff09;维。 impo…

Stm32串口搭配DMA实现自定义printf、scanf

前言:本文仅供学习参考使用&#xff0c;主要目的是让大家快速使用串口调试&#xff0c;文章所提及的GCC适用于Clion&#xff0c;Vscode等第三方编辑器的用户。作者有时间会继续更新^_^ 一、GCC环境 1、标准库 (1)、使用方法 在主函数while(1)初始化中&#xff0c;添加Seria…