Apache2服务介绍

news2024/9/21 20:50:46

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.com
    ServerName huhy1.com
    ServerAlias www.huhy1.com
    DocumentRoot /var/www/huhy1.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/huhy1.com_error.log
    CustomLog ${APACHE_LOG_DIR}/huhy1.com_access.log combined
</VirtualHost>

huhy2站点

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

添加以下内容

<VirtualHost *:82>
    ServerAdmin webmaster@test.com
    ServerName huhy2.com
    ServerAlias www.huhy2.com
    DocumentRoot /var/www/huhy2.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/huhy2.com_error.log
    CustomLog ${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,allow
        Allow 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.log
    CustomLog ${APACHE_LOG_DIR}/reverse-proxy_access.log combined
</VirtualHost>             

启用虚拟主机配置

a2ensite reverse-proxy.conf
systemctl restart apache2

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

在这里插入图片描述

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

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

相关文章

【系列教程之】1、点亮一个LED灯

1、点亮一个LED灯 作者将狼才鲸创建日期2024-07-23 CSDN教程目录地址&#xff1a;【目录】8051汇编与C语言系列教程本Gitee仓库原始地址&#xff1a;才鲸嵌入式/8051_c51_单片机从汇编到C_从Boot到应用实践教程 本源码包含C语言和汇编工程&#xff0c;能直接在电脑中通过Keil…

SQL性能优化秘籍:如何避免计算导致索引失效

适用于MySQL、PostgreSQL、Oracle等各种数据库的优化技巧 问题剖析 设想我们为customer表的c_acctbal列创建了一个B树索引c_acctbal_idx&#xff0c;以加速相关查询。然而&#xff0c;一个看似无害的计算可能会阻碍索引的使用。比如这样的查询&#xff1a; SELECT * FROM cus…

二次元手游《交错战线》游戏拆解

交错战线游戏拆解案 游戏亮点即核心趣味 一、关键词&#xff1a; 回合制游戏、二次元、机甲、横板、剧情、养成、异星探索。 二、游戏亮点&#xff1a; 符合目标群体审美的原画。 三、核心趣味&#xff1a; 抽卡、肝或者氪金解锁新皮肤。 核心玩法及系统规则 核心玩法&…

海外IP代理科普:代理池有什么用?代理池大小的影响

在当今数字化时代&#xff0c;网络爬虫已经成为获取各类信息必不可少的工具。在大规模数据抓取中&#xff0c;使用单一 IP 地址或同一 IP 代理往往会面临抓取可靠性降低、地理位置受限、请求次数受限等一系列问题。为了克服这些问题&#xff0c;构建代理池成为一种有效的解决方…

【Android Compose】ListView效果

【Android Compose】ListView效果 1、Column、Row 和 Box2、LazyColumn和LazyRow3、Compose 中的状态4、ListView效果5、android-compose-codelabs Jetpack Compose 使用入门 Jetpack Compose 教程 Jetpack Compose 1、Column、Row 和 Box Compose 中的三个基本标准布局元素是 …

C++相关概念和易错语法(24)(map、迭代器分类)

1.map 在上篇文章中&#xff0c;我着重介绍了set&#xff0c;由于map和set同源&#xff0c;所以这次我会着重介绍map别于set的地方 &#xff08;1&#xff09;模板参数 set是以单一的key作为成员变量&#xff0c;而map是以pair作为成员变量&#xff0c;而pair的first作为key来…

使用千帆SDK压测千帆大模型平台上的服务

场景 给用户提供千帆标准的压测工具&#xff08;千帆SDK&#xff09;。满足以下使用场景&#xff1a; 测试sft模型部署到算力单元后&#xff0c;实际的性能效果 对比模型压缩后的性能效果 测试预置服务的性能 压测数据准备&#xff08;数据格式规范说明&#xff09; 可用…

DAY05 CSS

文章目录 1 CSS选择器(Selectors)8. 后代(包含)选择器9. 直接子代选择器10. 兄弟选择器11. 相邻兄弟选择器12. 属性选择器 2 伪元素3 CSS样式优先级1. 相同选择器不同样式2. 相同选择器相同样式3. 继承现象4. 选择器不同权值的计算 4 CSS中的值和单位1. 颜色表示法2. 尺寸表示法…

Try ubuntu core (by quqi99)

作者&#xff1a;张华 发表于&#xff1a;2024-07-20 版权声明&#xff1a;可以任意转载&#xff0c;转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明(http://blog.csdn.net/quqi99) try ubuntu core on qemu #ovmf is to ensure compatibility with the re…

电机线电流与转差率曲线理论推导

1.推导基础&#xff1a; #已知正转正拉电流近似为&#xff1a; curr_in_upward (im im*(rm(lml2)*2*np.pi*freq_in*1j)/(r2 l2*2*np.pi*freq_in*1j (1-s)/s*r2))#同工况同负载&#xff0c;正转反拉电流近似为&#xff1a; curr_in_downward (im im*(rm(lml2)*2*np.pi*f…

代码随想录第六十二天 | 739. 每日温度 , 496.下一个更大元素 I ,503.下一个更大元素II

先复习一下栈与队列。栈是先进后出&#xff0c;队列是先进先出。二者都属于STL容器&#xff08;版本是SGI STL&#xff09;中的容器适配器。底层容器完成其所有的工作&#xff0c;对外提供统一的接口&#xff0c;底层容器是可插拔的。如果没有指定底层实现的话&#xff0c;默认…

22-联合体与枚举

22-联合体与枚举 文章目录 22-联合体与枚举一、 联合体1.1 定义和特点1.2 语法1.3 示例1.4 联合体的使用1.5 联合体的使用&#xff1a;检查系统的字节序 二、 枚举2.1 定义和特点2.2 语法2.3 枚举常量的值可以手动修改 一、 联合体 1.1 定义和特点 联合体&#xff08;Union&a…

扩展PyTorch视觉模型

扩展PyTorch视觉模型 目录 扩展PyTorch视觉模型 一、概述 二、扩展基本视觉模型的原因 1. 性能提升 2. 功能扩展 3. 资源管理 三、扩展PyTorch视觉模型的方法 1.修改现有架构 2.应用模型集成技术 3.量化和压缩模型 四、高级技巧与实践 1.自定义训练循环 2.深度模型…

【SpringBoot】 jasypt配置文件密码加解密

目前我们对yml配置文件中的密码都是明文显示&#xff0c;显然这不安全&#xff0c;有的程序员离职了以后可能会做一些非法骚操作&#xff0c;所以我们最好要做一个加密&#xff0c;只能让领导架构师或者技术经理知道这个密码。所以这节课就需要来实现一下。 我们可以使用jasypt…

Gitops-万字保姆级教程-小白也可以轻松学会! (Part 2)

系列文章目录 本文章分为2个部分&#xff1a; Part 1主要涉及Gitlab、Gitlab-Runner、Git-Ci、Sonar-qube-CI阶段 Part 2主要涉及ArgoCD阶段 Gitops-万字保姆级教程-小白也可以轻松学会! (Part 1)-CSDN博客 Gitops-万字保姆级教程-小白也可以轻松学会! (Part 2) 文章目录 目…

【测试能力提升----fastapi框架项目】需求分析

1. FastAPI框架架构 2. 场景分析 2.1 系统分类 单一用户权限系统&#xff08;实用于CMS模型&#xff09;多用户多权限系统&#xff08;实用于多租商户类型&#xff09; 2.2 功能模块 用户登录模块用户管理模块角色权限管理模块基本设置模块日志模块 2.3 需求分析 用户登录…

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-25 ADC模块FEP-DAQ9248采集显示波形方案

软件版本&#xff1a;Anlogic -TD5.9.1-DR1_ES1.1 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用安路(Anlogic)FPGA 实验平台&#xff1a;米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

24年广东“双百社工”招聘报名流程详细步骤

还在蹲公告的宝子们注意啦&#xff01;&#x1f525;24年广东双百社工公告陆续出啦&#xff01;⚠️中山双百社工招聘57人&#xff0c;佛山双百社工招聘135人&#xff0c;其他地区也快了&#xff01;⏰留给我们备考的时间只有一个月左右&#xff0c;想一次上岸的宝子抓紧备考&a…

《专题》numpy科学计算基础库——精细化讲解 <1>

一、什么是numpy库 Numpy(Numerical Python) 是科学计算基础库&#xff0c;提供大量科学计算 相关功能&#xff0c;比如数据统计&#xff0c;随机数生成等。其提供最核心类型为多维数组类型&#xff08;ndarray&#xff09;&#xff0c;支持大量的维度数组与矩阵运算&#xff0…

Java面试题(每日更新)

每日五道&#xff01;学会就去面试&#xff01; 本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单&#xff0c;下面一起进入主题吧。 目录 1.概述 2.Java 基础 2.1 JDK 和 JRE 有什么区别&#xff1f; 2.2 和 equals 的区别是什么&#xff1f; 2.3 两个对象的…