当前位置: 首页 > news >正文

Ubuntu实战续篇:Apache httpd轻松搭建高效代理服务器

Ubuntu实战续篇:Apache httpd轻松搭建高效代理服务器

      • 一、前言
      • 二、Ubuntu下的Apache配置文件概览
      • 三、配置并启用 Apache 代理服务

作者:高玉涵
时间:2024.7.11 21:06
博客:blog.csdn.net/cg_i
环境:Ubuntu 22.04.4 LTS、Apache/2.4.52 (Ubuntu)

机器比人更能干,大部分人终将无所事事。

一、前言

本篇是[《Windows11上Apache httpd实战:轻松搭建高效代理服务器》](Windows11上Apache httpd实战:轻松搭建高效代理服务器-CSDN博客)的姊妹篇。在之前的篇章中,我详细介绍了如何在Windows 11系统上利用Apache httpd搭建一个高效、稳定的代理服务器。然而,由于WindowsUbuntu两大操作系统在配置和管理上存在着显著的差异,许多习惯使用Ubuntu系统的用户可能遇到了不少挑战。为了满足这部分用户的需求,我们特别推出了本篇实战指南,旨在为大家提供一份详尽、易懂的Ubuntu系统上Apache httpd代理服务器的搭建教程。无论您是初学者还是有一定经验的开发者,相信都能从中找到适合自己的学习路径,轻松掌握在Ubuntu上搭建高效代理服务器的技能。

二、Ubuntu下的Apache配置文件概览

在Ubuntu系统中,Apache2的配置体系独具特色,不同于某些将所有设置集中于单一配置文件的系统,Ubuntu采用了模块化的设计思想。这种设计将不同的配置项分散在多个文件中,并通过apache2.conf主配置文件中的Include指令来引用这些分散的配置文件。

具体来说,Ubuntu中的Apache2配置文件和目录结构可以梳理如下:

  1. 主配置文件:
  • 位置:/etc/apache2/apache2.conf
  • 功能:这是Apache的主配置文件,系统启动时会自动读取。它包含了指向其他配置文件的Include指令,用于加载模块配置、端口配置、虚拟主机配置等重要设置。
  1. 模块配置文件:
  • 可用模块配置:/etc/apache2/mods-available/目录,存放所有可用的Apache模块配置文件(.load.conf文件)。

  • 已启用模块配置:/etc/apache2/mods-enabled/目录,存放指向mods-available目录中文件的符号链接,决定哪些模块被实际启用。

  1. 端口配置文件:
  • 位置:/etc/apache2/ports.conf
  • 功能:包含Apache监听的端口号设置,修改监听端口时需编辑此文件。
  1. 虚拟主机配置文件:
  • 可用虚拟主机配置:/etc/apache2/sites-available/目录,存放所有可用的虚拟主机配置文件。
  • 已启用虚拟主机配置:/etc/apache2/sites-enabled/目录,存放指向sites-available目录中文件的符号链接,决定哪些虚拟主机被实际启用。
  1. 其他配置文件:
  • 可选配置:/etc/apache2/conf-available//etc/apache2/conf-enabled/目录,用于存放其他可选的配置文件及其启用链接。
  • 环境变量设置:/etc/apache2/envvars文件,包含Apache运行时的环境变量。
  1. 用户自定义配置文件(非默认主要配置):
  • 位置:/etc/apache2/httpd.conf
  • 说明:在某些情况下,用户可能在此文件中添加自定义配置。但在Ubuntu的Apache2默认安装中,此文件可能为空,因为所有主要配置都已分散到其他文件中。

注意事项

  • 在Ubuntu的Apache2中,httpd.conf并非主要配置文件,且默认情况下可能为空。因此,在Ubuntu中配置Apache时,应重点关注apache2.conf文件以及通过Include指令引用的其他配置文件。

三、配置并启用 Apache 代理服务

1. 启用代理模块

  • 导航至模块启用目录:cd /etc/apache2/mods-enabled
  • 创建必要的符号链接以启用代理模块:
sudo ln -s ../mods-available/proxy.load  
sudo ln -s ../mods-available/proxy_connect.load  
sudo ln -s ../mods-available/proxy_http.load  
sudo ln -s ../mods-available/proxy.conf

执行后,使用 ls -al 命令查看链接情况,应类似于以下输出:

gao@NAS:/etc/apache2/mods-enabled$ ls -al pr*  
lrwxrwxrwx 1 root root 28  711 20:44 proxy.conf -> ../mods-available/proxy.conf  
lrwxrwxrwx 1 root root 36  711 20:40 proxy_connect.load -> ../mods-available/proxy_connect.load  
lrwxrwxrwx 1 root root 33  711 20:40 proxy_http.load -> ../mods-available/proxy_http.load  
lrwxrwxrwx 1 root root 28  711 20:40 proxy.load -> ../mods-available/proxy.load
  • 举例:proxy.load文件内容

    LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
    

2. 修改 proxy.conf 配置文件

使用文本编辑器(如 vi)编辑 proxy.conf 文件:

gao@NAS:/etc/apache2/mods-enabled$ sudo vi proxy.conf

修改内容如下,确保取消注释并适当配置代理设置:

<IfModule mod_proxy.c>  # 如果想将 Apache 用作正向代理。  # 注意:请务必在 <Proxy *> 块中限制访问。  # 开放代理服务器对您的网络和整个互联网都是危险的。  #  # 如果只想将 Apache 用作某些 Web 应用程序服务器前的反向代理/网关,  # 则不需要 'ProxyRequests On'。  ProxyRequests On  <Proxy *>  Require all granted  </Proxy>  
</IfModule>

3. 配置监听端口

  • 导航至 Apache 配置文件目录:cd /etc/apache2
  • 编辑 ports.conf 文件以添加或修改监听端口:
gao@NAS:/etc/apache2$ sudo vi ports.conf

修改内容如下,添加新的监听端口(例如 8756):

# 如果只是更改端口或在此处添加更多端口,则可能还需要更改  
# /etc/apache2/sites-enabled/000-default.conf 中的 VirtualHost 语句。  Listen 80  
Listen 8756  <IfModule ssl_module>  Listen 443  
</IfModule>  <IfModule mod_gnutls.c>  Listen 443  
</IfModule>

4. 启动 Apache 服务

使用以下命令启动 Apache 服务:

sudo systemctl start apache2

确保 Apache 服务已成功启动,并且代理服务正在监听配置的端口。

gao@NAS:~$ netstat -an|grep '8756'
tcp6       0      0 :::8756                 :::*                    LISTEN     

至此,Apache httpd代理服务器已在Ubuntu系统上成功配置并启动。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring AOP 实现 Excel 导出统一处理
  • Linux——公网 IP别名设置,清屏,删除别名,在linux中提供alias永久化的方法,命令历史
  • 【Superset】dashboard 自定义URL
  • ESP32CAM物联网教学11
  • 微服务中的 “服务发现机制” 简介
  • 链接追踪系列-07.logstash安装json_lines插件
  • Redis① —— Redis基础
  • 数据分析_计划
  • 金蝶云苍穹-插件开发(四)GPT开发相关插件
  • 【云岚到家】-day05-6-项目迁移-门户-CMS
  • anaconda安装
  • 简谈设计模式之建造者模式
  • 蓝牙BLE广播
  • 深入了解 MySQL 的 EXPLAIN 命令
  • Spring Boot中的安全配置与实现
  • [译]Python中的类属性与实例属性的区别
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • flutter的key在widget list的作用以及必要性
  • httpie使用详解
  • Java 内存分配及垃圾回收机制初探
  • Java基本数据类型之Number
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Magento 1.x 中文订单打印乱码
  • PHP面试之三:MySQL数据库
  • ReactNativeweexDeviceOne对比
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 解决iview多表头动态更改列元素发生的错误
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 入口文件开始,分析Vue源码实现
  • 收藏好这篇,别再只说“数据劫持”了
  • 数组大概知多少
  • 移动端唤起键盘时取消position:fixed定位
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 容器镜像
  • ​低代码平台的核心价值与优势
  • ​你们这样子,耽误我的工作进度怎么办?
  • # Redis 入门到精通(七)-- redis 删除策略
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (附源码)计算机毕业设计ssm电影分享网站
  • (转)Linux下编译安装log4cxx
  • (转)VC++中ondraw在什么时候调用的
  • (自用)仿写程序
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET基础篇——反射的奥妙
  • .NET学习全景图
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • :如何用SQL脚本保存存储过程返回的结果集
  • @Resource和@Autowired的区别
  • [ C++ ] STL---string类的模拟实现
  • [ C++ ] template 模板进阶 (特化,分离编译)