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

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

作者:高玉涵

时间: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
  • 创建必要的符号链接以启用代理模块:
shell 复制代码
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 命令查看链接情况,应类似于以下输出:

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

    shell 复制代码
    LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so

2. 修改 proxy.conf 配置文件

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

shell 复制代码
gao@NAS:/etc/apache2/mods-enabled$ sudo vi proxy.conf

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

apache 复制代码
<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 文件以添加或修改监听端口:
shell 复制代码
gao@NAS:/etc/apache2$ sudo vi ports.conf

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

apache 复制代码
# 如果只是更改端口或在此处添加更多端口,则可能还需要更改  
# /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 服务:

shell 复制代码
sudo systemctl start apache2

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

shell 复制代码
gao@NAS:~$ netstat -an|grep '8756'
tcp6       0      0 :::8756                 :::*                    LISTEN     

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

相关推荐
打不了嗝 ᥬ᭄2 小时前
Linux的权限
linux
落幕2 小时前
C语言-进程
linux·运维·服务器
深度Linux2 小时前
C++程序员内功修炼——Linux C/C++编程技术汇总
linux·项目实战·c/c++
风静如云4 小时前
OpenBMC:BmcWeb定义service
linux
leoufung4 小时前
VIM FZF 安裝和使用
linux·编辑器·vim
bugtraq20215 小时前
XiaoMi Mi5(gemini) 刷入Ubuntu Touch 16.04——安卓手机刷入Linux
linux·运维·ubuntu
CodeWithMe6 小时前
[ Vim ] 常用命令 and 配置
linux·编辑器·vim
DC_BLOG6 小时前
Linux-GlusterFS进阶分布式卷
linux·运维·服务器·分布式
cookies_s_s6 小时前
Linux--进程(进程虚拟地址空间、页表、进程控制、实现简易shell)
linux·运维·服务器·数据结构·c++·算法·哈希算法
丁劲犇6 小时前
碳基生物的悲歌-DeepSeek思考实现Linux动态库递归收集工具
linux·递归·deepseek·ldd