Apache2服务介绍

apache2

    • 安装使用
      • 配置web访问
      • 配置虚拟主机
      • 配置代理
        • 正向代理
        • 反向代理

官网

互联网上排名第一的 HTTP 服务器,Apache HTTP 服务器项目致力于开发和维护适用于现代操作系统(包括 UNIX 和 Windows)的开源 HTTP 服务器。该项目的目标是提供安全、高效且可扩展的服务器,该服务器提供与当前 HTTP 标准同步的 HTTP 服务。Apache HTTP 服务器(centos中命名为httpd)于 1995 年推出,自 1996 年 4 月以来一直是互联网上最受欢迎的 Web 服务器。2020 年 2 月,它作为一个项目迎来了 25 岁生日。

Apache2的主要功能和特点

  • 开源和免费:

Apache HTTP Server是一个开源项目,由Apache软件基金会维护,这意味着它是免费的,任何人都可以下载、使用和修改。

  • 跨平台支持:

Apache2支持多种操作系统,包括Unix、Linux、Windows、MacOS等。

  • 模块化架构:

Apache2采用模块化设计,用户可以根据需要启用或禁用不同的模块。例如,mod_ssl模块用于处理SSL/TLS加密,mod_rewrite模块用于URL重写。

  • 高度可配置:

通过配置文件(如httpd.conf、apache2.conf)进行详细配置,用户可以定制Apache的行为,包括虚拟主机、访问控制、日志记录等。

  • 支持多种协议:

除了HTTP协议,Apache2还支持HTTPS(通过SSL/TLS加密)、FTP、WebDAV等多种协议。

  • 虚拟主机支持:

Apache2可以在一台服务器上托管多个网站(虚拟主机),每个网站可以有自己独立的配置和域名。

  • 强大的日志功能:

Apache2提供详细的访问日志和错误日志,帮助管理员监控和排查服务器问题。

  • 广泛的社区支持和文档:

由于其广泛使用,Apache2有一个活跃的社区和丰富的文档资源,用户可以方便地找到帮助和解决方案。

安装使用

这里使用Ubuntu2404环境,apt直接下载

apt install -y apache2
systemctl enable --now apache2

Apache2的主要配置文件位于/etc/apache2目录下,常见的配置文件包括:

  • /etc/apache2/apache2.conf:主配置文件
  • /etc/apache2/ports.conf:端口配置文件
  • /etc/apache2/sites-available/:存放可用虚拟主机配置文件的目录
  • /etc/apache2/sites-enabled/:存放启用虚拟主机配置文件的目录(通过符号链接指向sites-available中的文件)
  • /var/log/apache2/:日志文件(访问日志和错误日志)。

基础命令

  • apache2ctl 是一个用于控制 Apache2 的脚本,它提供了多种操作选项。

    • apache2ctl graceful
      平滑重启 Apache2 服务,不中断现有的连接。

    • apache2ctl configtest
      检查 Apache2 配置文件的语法是否正确。

    • apache2ctl status
      显示 Apache2 服务的状态信息(需要启用 mod_status 模块)。

  • systemctl 是系统和服务管理器,用于管理服务的启动、停止、重启等。

    • systemctl start apache2
      启动 Apache2 服务。

    • systemctl stop apache2
      停止 Apache2 服务。

    • systemctl restart apache2
      重启 Apache2 服务。

    • systemctl reload apache2
      重新加载 Apache2 配置,而不中断当前连接。

    • systemctl status apache2
      显示 Apache2 服务的状态信息。

  • a2ensite 和 a2dissite用于启用和禁用虚拟主机配置文件。

    • a2ensite 文件名(000-default.conf等)
      启用指定的虚拟主机配置文件。例如:a2ensite example.com。

    • a2dissite 文件名(000-default.conf等)
      禁用指定的虚拟主机配置文件。例如:a2dissite example.com。

  • a2enmod 和 a2dismod用于启用和禁用 Apache2 模块。

    • a2enmod <模块>
      启用指定的 Apache2 模块。例如:a2enmod rewrite。

    • a2dismod <模块>
      禁用指定的 Apache2 模块。例如:a2dismod rewrite。

配置web访问

配置一个简单的Web网站使用Apache2服务器

节点IP
huhy192.168.200.190

在默认的Web根目录中创建一个简单的HTML页面。默认情况下,Apache2的Web根目录位于/var/www/html

cat > /var/www/html/index.html << eof
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Hello WorLd</title>
</head>
<body><h1>huhy</h1><p>简单的web界面</p>
</body>
</html>
eof

确保Apache2用户有权限读取和执行Web根目录中的文件

chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html

重新加载Apache2服务以应用更改

systemctl reload apache2

IP访问;http://ip

在这里插入图片描述

配置虚拟主机

配置虚拟主机可以在同一台Apache2服务器上托管多个独立的网站

节点IP
huhy192.168.200.190

创建网站目录;例如两个站点huhy1.com和huhy2.com

mkdir -p /var/www/huhy1.com/public_html
mkdir -p /var/www/huhy2.com/public_html

设置目录权限

chown -R www-data:www-data /var/www/huhy1.com/public_html
chown -R www-data:www-data /var/www/huhy2.com/public_html
chmod -R 755 /var/www

为每个站点创建一个简单的HTML文件

cat > /var/www/huhy1.com/public_html/index.html << eof
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Hello WorLd</title>
</head>
<body><h1>huhy1</h1><p>huhy1的站点界面</p>
</body>
</html>
eof
cat > /var/www/huhy2.com/public_html/index.html << eof
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Hello WorLd</title>
</head>
<body><h1>huhy2</h1><p>huhy2的站点界面</p>
</body>
</html>
eof

在Apache2的sites-available目录中为每个站点创建一个配置文件。

vim /etc/apache2/sites-available/huhy1.com.conf

在文件中添加以下内容

<VirtualHost *:81>ServerAdmin webmaster@example.comServerName huhy1.comServerAlias www.huhy1.comDocumentRoot /var/www/huhy1.com/public_htmlErrorLog ${APACHE_LOG_DIR}/huhy1.com_error.logCustomLog ${APACHE_LOG_DIR}/huhy1.com_access.log combined
</VirtualHost>

huhy2站点

vim /etc/apache2/sites-available/huhy2.com.conf

添加以下内容

<VirtualHost *:82>ServerAdmin webmaster@test.comServerName huhy2.comServerAlias www.huhy2.comDocumentRoot /var/www/huhy2.com/public_htmlErrorLog ${APACHE_LOG_DIR}/huhy2.com_error.logCustomLog ${APACHE_LOG_DIR}/huhy2.com_access.log combined
</VirtualHost>

开启监听端口;这样才可以让IP指定端口访问指定的虚拟主机

vim /etc/apache2/ports.conf

添加以下内容

Listen 81
Listen 82

使用a2ensite命令启用这些虚拟主机配置。

a2ensite huhy1.com.conf
a2ensite huhy2.com.conf

禁用默认的虚拟主机配置(可选)此处不禁用

a2dissite 000-default.conf

重新加载apache2服务

systemctl reload apache2

检测配置文件是否正确

root@huhy:~# apache2ctl -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
#此警告只需要配置ServerName即可vim /etc/apache2/apache2.conf
VirtualHost configuration:
*:81                   huhy1.com (/etc/apache2/sites-enabled/huhy1.com.conf:1)
*:82                   huhy2.com (/etc/apache2/sites-enabled/huhy2.com.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

界面访问

huhy1主机;IP:81

在这里插入图片描述
huhy2主机;IP:82

在这里插入图片描述

配置代理

节点IP
huhy192.168.200.190
代理节点192.168.200.195
正向代理

正向代理是一个客户端与互联网之间的中介,它代表客户端向服务器发出请求。

工作原理:

  • 客户端配置:客户端配置其代理设置,将请求发送到代理服务器。
  • 请求转发:代理服务器接收客户端的请求,并代表客户端将请求转发到目标服务器。
  • 响应返回:目标服务器将响应发送回代理服务器,代理服务器再将响应返回给客户端。

主要用途:

  • 隐匿客户端身份:隐藏客户端的真实 IP 地址。
  • 访问控制:允许或阻止特定的客户端访问特定资源。
  • 缓存:缓存常用的网页内容,提高访问速度和减少带宽消耗。
  • 绕过地理限制:访问受地域限制的网站或服务。
  • 内容过滤:阻止访问特定网站或内容。

举例:
你在公司内部网络中访问互联网,公司可能会使用正向代理来控制和监视员工的网络活动。使用VPN服务,VPN服务器充当正向代理,代表你访问互联网。

正向代理:客户端配置的代理,主要用于隐匿客户端身份、内容过滤、缓存等功能。

启用正向代理模块

a2enmod proxy
a2enmod proxy_http
systemctl reload apache2

编辑 Apache 的配置文件, /etc/apache2/sites-available/000-default.conf,添加以下内容

vim /etc/apache2/sites-available/000-default.conf
<VirtualHost *:8080>ServerName proxy.example.com# 开启代理功能ProxyRequests On<Proxy *>Order deny,allowAllow from all</Proxy># 代理转发到目标服务器ProxyPass / http://192.168.200.190/ProxyPassReverse / http://192.168.200.190/
</VirtualHost>

配置监听端口

vim /etc/apache2/ports.conf
Listen 8080

重启 Apache

systemctl restart apache2

使用 curl 命令中通过代理服务器访问外部资源;可以查看到190网段的界面

root@huhy:~# curl -x http://localhost:8080 http://192.168.200.190
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Hello WorLd</title>
</head>
<body><h1>huhy</h1><p>简单的web界面</p>
</body>
</html>
反向代理

反向代理是一个服务器端的中介,它代表服务器接收客户端的请求,并将请求转发到实际的后端服务器。

工作原理:

  • 客户端请求:客户端向反向代理发送请求,通常是通过一个域名。
  • 请求转发:反向代理接收到请求后,将请求转发到后端的一个或多个实际服务器。
  • 响应返回:后端服务器将响应发送回反向代理,反向代理再将响应返回给客户端。

主要用途:

  • 负载均衡:分配请求到多个后端服务器,以平衡负载和提高性能。
  • 安全性:隐藏和保护后端服务器的真实 IP 地址,增加安全性。
  • 缓存:缓存常用内容,减少对后端服务器的请求,提升响应速度。
  • SSL 终端:处理 SSL/TLS 加密解密操作,提高后端服务器的处理效率。
  • 应用层防火墙:提供额外的安全层,对请求进行过滤和检查。

举例:
大型网站使用反向代理来分发流量到多个应用服务器,以确保高可用性和可伸缩性,你访问一个网站时,实际上可能由多个后端服务器处理请求,但你只看到一个统一的域名和 IP 地址,这就是反向代理的作用

反向代理:服务器配置的代理,主要用于负载均衡、安全保护、缓存等功能

启用反向代理模块

a2enmod proxy
a2enmod proxy_http
systemctl reload apache2

编辑 Apache 的配置文件,/etc/apache2/sites-available/reverse-proxy.conf,添加以下内容

vim /etc/apache2/sites-available/reverse-proxy.conf
<VirtualHost *:81>ServerName localhost# 保留客户端请求中的原始主机头ProxyPreserveHost On# 设置反向代理,将请求转发到实际的 Web 服务器ProxyPass / http://192.168.200.190/ProxyPassReverse / http://192.168.200.190/# 错误日志和访问日志的位置ErrorLog ${APACHE_LOG_DIR}/reverse-proxy_error.logCustomLog ${APACHE_LOG_DIR}/reverse-proxy_access.log combined
</VirtualHost>             

启用虚拟主机配置

a2ensite reverse-proxy.conf
systemctl restart apache2

测试;界面访问(IP:81)反向代理服务器,返回web服务器页面内容

在这里插入图片描述

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

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

相关文章

【译】设计已死

文章概括&#xff1a; 本文探讨了人工智能&#xff08;AI&#xff09;的崛起如何可能使设计师甚至设计本身变得过时。作者借用尼采的名言“上帝已死”&#xff0c;引出设计在AI时代面临的困境&#xff0c;并分析了 AI 对设计行业的深远影响。 思维导图&#xff1a; 人类创造的…

GPT模型为什么能生成有意义的文本

GPT模型的底层&#xff0c;其实是谷歌团队推出的Transformer模型。但是在GPT-3出现之前&#xff0c;大家一直对它没有多少了解。直到它的参数数量突破1750亿个的时候&#xff0c;它才建立起一个庞大的神经网络&#xff0c;这个神经网络最突出的特点是大数据、大模型和大计算。其…

书生浦语多模态简述——学习笔记

多模态学习概念 多模态它是研究异构且相互连接数据的科学。它涵盖了从原始的器官信号到抽象概念的多种模态。 比如说我们语音和语言是我们理解人类交流的关键模态&#xff0c;而情感和图像就为我们提供了对环境和对象的感知&#xff0c;通过分析这些模态&#xff0c;我们就可…

技术成神之路:设计模式(九)观察者模式

介绍 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式。它允许一个对象&#xff08;称为主题或可观察者&#xff09;来监视并通知一组依赖于这个对象的其他对象&#xff08;称为观察者&#xff09;&#xff0c;以便在主题状态发生变化时自动更新观察者的…

Python中高效处理大数据的几种方法

随着数据量的爆炸性增长&#xff0c;如何在Python中高效地处理大数据成为了许多开发者和数据科学家的关注焦点。Python以其简洁的语法和丰富的库支持&#xff0c;在数据处理领域占据了重要地位。本文将介绍几种在Python中高效处理大数据的常用方法。 目录 1. 使用Pandas进行数…

双向链表(C语言版)

1. 双向链表的结构 注意&#xff1a;这里的“带头”跟单链表的“头结点”是两个概念&#xff0c;实际上在单链表阶段称呼不太严谨&#xff0c;但是为了更好地理解就直接称为单链表的头结点。带头链表里的头结点&#xff0c;实际为“哨兵位”&#xff0c;哨兵位结点不存储任何有…

若依Vue前后端分离版如何部署(windows)(超详细)

一、项目环境准备 下面是项目所需要准备的环境 Node.js redis 1、Node.js下载 下面进入官网可以下载Node.js — 在任何地方运行 JavaScript (nodejs.org)https://nodejs.org/zh-cn 下载完成安装后&#xff0c;需要配置环境变量&#xff0c;首先复制以下nodejs的安…

【JavaScript】箭头函数

具体讲解 之前写 this 的指向时就提到过箭头函数&#xff0c;但是由于其比较复杂&#xff0c;还是单独开一篇来讲箭头函数。 箭头函数&#xff0c;箭头函数不能作为构造函数&#xff0c;没有原型 prototype&#xff0c;不能 new。 在箭头函数中&#xff0c;this 关键字指向的是…

代码随想录Day15|| 110平衡二叉树 257二叉树的所有路径 404左叶子之和 222完全二叉树的节点个数

110平衡二叉树 力扣题目链接 题目描述 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&#xff…

深入浅出WebRTC—GCC

GoogCcNetworkController 是 GCC 的控制中心&#xff0c;它由 RtpTransportControllerSend 通过定时器和 TransportFeedback 来驱动。GoogCcNetworkController 不断更新内部各个组件的状态&#xff0c;并协调组件之间相互配合&#xff0c;向外输出目标码率等重要参数&#xff0…

昇思25天学习打卡营第17天|计算机视觉

昇思25天学习打卡营第17天 文章目录 昇思25天学习打卡营第17天ShuffleNet图像分类ShuffleNet网络介绍模型架构Pointwise Group ConvolutionChannel ShuffleShuffleNet模块构建ShuffleNet网络 模型训练和评估训练集准备与加载模型训练模型评估模型预测 打卡记录 ShuffleNet图像分…

2023 N1CTF-n1proxy

文章目录 参考rsa握手rust_proxy源码公匙交换和签名会话钥匙后续通信生命周期和裸指针代码审计漏洞点 libc-2.27.so大致思路&#xff08;exp还有变化&#xff09;调试exp泄露libc写free_hook执行命令exp 参考 https://github.com/Nu1LCTF/n1ctf-2023/tree/main/pwn/n1proxy ht…

JVM从1%到99%【精选】-运行时数据区

目录 1.运行时数据区概括 2.什么是内存溢出 3..程序计数器 4.Java虚拟机栈 5.本地方法栈 6.堆 7.方法区 8.直接内存 1.运行时数据区概括 Java虚拟机在运行Java程序过程中管理的内存区域,称之为运行时数据区。主要分为两大类&#xff1a;线程不共享、线程共享线程不共…

TypeScript中Interface接口的深度探索与实践

定义接口 在TypeScript中&#xff0c;interface是一个强有力的概念&#xff0c;它用于定义类型签名&#xff0c;特别是对象的结构。接口可以用来描述对象应该有哪些属性、方法&#xff0c;以及这些成员的类型。它们是实现类型系统中“鸭子类型”&#xff08;duck typing&#…

【22】Android高级知识之Window(三) -WMS

一、概述 这次开始到了WindowManagerService&#xff08;WMS&#xff09;&#xff0c;你可以把它看做一个WindowManager&#xff0c;只不过呢&#xff0c;属于系统服务进程&#xff08;system_server&#xff09;中的一员&#xff0c;和应用不在同一进程&#xff0c;所以涉及了…

CSS(二)——CSS 背景

CSS 背景 CSS 背景属性用于定义HTML元素的背景。 CSS 背景属性 Property描述background简写属性&#xff0c;作用是将背景属性设置在一个声明中。background-attachment背景图像是否固定或者随着页面的其余部分滚动。background-color设置元素的背景颜色。background-image把…

《程序猿学会 Vue · 基础与实战篇》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

数据结构(二叉树-1)

文章目录 一、树 1.1 树的概念与结构 1.2 树的相关术语 1.3 树的表示 二、二叉树 2.1 二叉树的概念与结构 2.2特殊的二叉树 满二叉树 完全二叉树 2.3 二叉树的存储结构 三、实现顺序结构二叉树 3.1 堆的概念与结构 3.2 堆的实现 Heap.h Heap.c 默认初始化堆 堆的销毁 堆的插入 …

2024100读书笔记|《飞花令·夏》——鲜鲫银丝脍,香芹碧涧羹,人皆苦炎热,我爱夏日长

2024100读书笔记|《飞花令夏》——鲜鲫银丝脍&#xff0c;香芹碧涧羹&#xff0c;人皆苦炎热&#xff0c;我爱夏日长 《飞花令夏&#xff08;中国文化古典诗词品鉴&#xff09;》素心落雪 编著&#xff0c;飞花令得名于唐代诗人韩翃《寒食》中的名句“春城无处不飞花”&#xf…

matlab仿真 模拟调制(下)

&#xff08;内容源自详解MATLAB&#xff0f;SIMULINK 通信系统建模与仿真 刘学勇编著第五章内容&#xff0c;有兴趣的读者请阅读原书&#xff09; clear all ts0.001; t0:ts:10-ts; fs1/ts; dffs/length(t); msgrandi([-3 3],100,1); msg1msg*ones(1,fs/10); msg2reshape(ms…