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.com
    DocumentRoot /var/www/ceshi
    <Directory "/var/www/ceshi">
        AllowOverride All            # 允许 .htaccess 文件中的指令覆盖主配置文件中的指令
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:81>
    ServerName www.luzheng.com
    DocumentRoot /var/www/luzheng
    <Directory "/var/www/luzheng">
        AllowOverride All
        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

 

 

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.com
    DocumentRoot /var/www/ceshi
    <Directory "/var/www/ceshi">
        AllowOverride None           # 不允许 .htaccess 文件覆盖主配置文件中的指令
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost 192.168.226.201:81>
    ServerName www.luzheng.com
    DocumentRoot /var/www/luzheng
    <Directory "/var/www/luzheng">
        AllowOverride None               
        Require all granted
    </Directory>
</VirtualHost>


[root@localhost ~]# systemctl restart httpd

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

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux信息显示相关指令

1、查看cpu 查看cpu信息:cat /proc/cpuinfo 查看cpu个数:nproc cat /proc/cpuinfo | grep "physical id" | uniq | wc -l uniq命令:删除重复行;wc –l命令:统计行数 查看CPU核数 cat /proc/cpuinfo | grep "cpu cores" | uniq 2、查看内存 cat /pr…

【STM32 |程序实例】按键控制、光敏传感器控制蜂鸣器

目录 前言 按键控制LED 光敏传感器控制蜂鸣器 前言 上拉输入&#xff1a;若GPIO引脚配置为上拉输入模式&#xff0c;在默认情况下&#xff08;GPIO引脚无输入&#xff09;&#xff0c;读取的GPIO引脚数据为1&#xff0c;即高电平。 下拉输入&#xff1a;若GPIO引脚配置为下…

Android adb shell关于CPU核的命令

Android adb shell关于CPU核的命令 先使用命令&#xff1a; adb shell 进入控制台。 然后&#xff0c;直接在$后面输入下面命令&#xff0c;针对CPU的命令。 cat /proc/cpuinfo | grep ^processor | wc -l 查看当前手机的CPU是几核的。 cat sys/devices/system/cpu/online …

Ansible常用变量【下】

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 前言 在上一篇文章《Ansible常用变量【上】》中&#xff0c;学习了Ansible常用变量的前半部分&#xff0c;放了个五一假&#x…

LeetCode1207独一无二的出现次数

题目描述 给你一个整数数组 arr&#xff0c;请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的&#xff0c;就返回 true&#xff1b;否则返回 false。 解析 正常的解法肯定是对每个元素使用一个hashmap&#xff0c;存元素及出现次数&#xff0c;然后通…

使用Apache Spark从MySQL到Kafka再到HDFS的数据转移

使用Apache Spark从MySQL到Kafka再到HDFS的数据转移 在本文中&#xff0c;将介绍如何构建一个实时数据pipeline&#xff0c;从MySQL数据库读取数据&#xff0c;通过Kafka传输数据&#xff0c;最终将数据存储到HDFS中。我们将使用Apache Spark的结构化流处理和流处理功能&#…

【Linux】调试器-gdb使用

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解Linux的编译器-gcc/g&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 1. 背景(A) 看大小(B) 查看ELF格式的文件 2.使用(A) 进入gdb(B) quit/q&#xff…

flink优化案例

文章目录 一、flink join维表案例二、flink 双流join案例三、总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考(适用于flink1.13) 一、flink join维表案例 背景:flink sql join 维表。job业务不复杂&#xff0c;job写入性能比较差。维表数据大约每天…

想半天憋不出几个字?试试AI扩写

大家在写文章时是否也经常这样&#xff1f;想了半天&#xff0c;结果只能写出几个字&#xff0c;但是要求往往又是几百多个字&#xff0c;那么有没有啥工具可以帮我们在原文的基础上扩写一下文章字数&#xff0c;让我们达到字数要求呢&#xff1f; 下面给大家介绍一下如何扩写文…

Microsoft Office for Mac 2024 (Office 365) 16.84 Universal 预览版

Microsoft Office for Mac 2024 (Office 365) 16.84 Universal 预览版 Office LTSC 2024 for Mac 请访问原文链接&#xff1a;Microsoft Office for Mac 2024 (Office 365) 16.84 Universal 预览版&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&a…

FullCalendar日历组件集成实战(2)

背景 有一些应用系统或应用功能&#xff0c;如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件&#xff0c;但功能比较简单&#xff0c;用来做数据展现勉强可用。但如果需要进行复杂的数据展示&#xff0c;以及互动操作如通过点击添加事件&#xff0…

Ubuntu安装cmake

在软件开发的世界中&#xff0c;构建系统扮演着至关重要的角色&#xff0c;它们确保代码能够正确、高效地编译和链接。CMake就是这样一个强大的跨平台自动化构建系统&#xff0c;它被广泛用于各种大型项目中。对于Ubuntu用户来说&#xff0c;安装CMake非常简单&#xff0c;而且…

kubeadm 在vubuntu22.04.4 server 上安装kubernetes 1.28.9

一、基础安装&#xff08;所有节点执行&#xff09;---------------------------------------- 时间同步 关闭防火墙 sudo ufw disable sudo ufw status关闭交换内存 临时关闭 sudo swapoff -a free -m永久关闭 sudo vim /etc/fstab 注释掉交换内存 转发 IPv4 并让 iptab…

鸿蒙ArkUI开发:常用布局【交叉轴】

交叉轴 垂直于主轴方向的轴线。Row容器交叉轴为纵向&#xff0c;Column容器交叉轴为横向。通过alignItems属性设置子元素在交叉轴&#xff08;排列方向的垂直方向&#xff09;上的对齐方式alignSelf属性用于控制单个子元素在容器交叉轴上的对齐方式&#xff0c;其优先级高于al…

4.分支与循环

逻辑控制分为三部分&#xff1a; 1.顺序结构---》顺序执行代码 2.分支结构---》if语句和switch语句 3.循环执行---》for语句 while语句 和do while语句 顺序结构比较简单&#xff0c;按照代码书写的顺序一行一行执行 分支结构&#xff08;if、switch语句&#xff09; 也就是…

深度学习之神经网络理论基础

深度学习之神经网络理论基础 人工神经元 人工神经元&#xff1a;人类神经元中抽象出来的数学模型 MP模型 mp模型&#xff1a;1943年心理学家W.S.McCulloch和数理逻辑学家W.Pitts研究出人工神经元&#xff0c;称为M-P模型。 M-P神经元&#xff08;一个用来模拟生物行为的数学模…

Chromium 调试指南2024 Windows11篇-Visual Studio 2022启用子进程调试插件(六)

1. 前言 在Chromium项目的开发过程中&#xff0c;构建、运行和调试是至关重要的步骤。本文将介绍如何使用Visual Studio 2022打开Chromium项目、启用子进程调试插件、以及编译Chromium项目的流程。通过这些步骤&#xff0c;我们将能够更加顺利地进行Chromium项目的开发和调试工…

深度解析Nginx:高性能Web服务器的奥秘(下)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《洞察之眼&#xff1a;ELK监控与可视化》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、前言 1、Nginx概述 二、Nginx核心功能 1、URL重写与重…

初识FlaskMySQL实现前后端通信 全栈开发之路——后端篇(1)

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇&#xff1a;setup语法&#xff0c;设置响应式数据。 第四篇&#xff1a;数据绑定、计算属性和watch监视 第五篇 : 组件…

拥有一台服务器可以做哪些有趣又实用的事情?

在接触云服务器这个概念你以前&#xff0c;你是不是在想&#xff1a; 可能是&#xff0c;云服务器&#xff0c;这个产品的存在&#xff0c;它可以为你做些什么实用的事情吗&#xff1f; 或者是&#xff0c;云服务器这个看似高大上的科技产品&#xff0c;其实可以为我们的生活…