Apache 反向代理如何设置 ?Apache 反向代理的分步过程

通过将反向代理作为额外的安全层,您可以增强 Web 应用程序的弹性并减少潜在攻击的可能性。 Apache HTTP Server 提供了广泛的模块和扩展,专门用于支持各种代理功能。在本教程,我们将引导您完成设置 Apache 反向代理的分步过程。

什么是 mod_proxy?

mod_proxy:这是Apache的一个标准模块,它提供了反向代理的功能。您可以使用ProxyRass和ProxyPassReverse指令来配置反向代理。

Apache是一种众所周知且广泛使用的开源 Web 服务器,用于在 Internet 上提供 Web 内容。它可在 Windows、Linux 和 macOS 等许多操作系统上使用,并且可以通过插件和模块灵活扩展。

mod_proxy 模块允许 Apache Web 服务器充当反向代理,将请求转发到另一台服务器并将响应返回给客户端。这在存在多个 Web 服务器并且需要在它们之间分配工作负载的情况下被证明是有价值的。它增强了性能并为您的 Web 基础设施构建了高可用性架构。

Apache mod_proxy 由多个模块组成,每个模块都有自己的功能。以下是一些最重要的模块:

  • mod_proxy:提供反向代理的核心功能,并将请求转发到另一台服务器。
  • mod_proxy_http:为 HTTP 和 HTTPS 协议提供代理功能。
  • mod_proxy_ftp:为FTP协议提供代理功能。
  • mod_proxy_connect:用于 SSL 加密连接。
  • mod_proxy_ajp:用于将请求转发到启用 AJP 的应用程序服务器。
  • mod_proxy_wstunnel:用于网络套接字的使用
  • mod_proxy_balancer:提供负载均衡功能。
  • mod_cache:支持各种缓存方法。
  • mod_headers:用于修改 HTTP 标头行。
  • mod_deflate:压缩 HTTP 响应。

 

设置 Apache 反向代理

开始之前请确保您的系统上已安装 Apache。

第 1 步:更新包索引

首先,您应该更新可用软件包的列表。在终端中输入以下命令:

$ sudo aptitude update

现在更新系统上已安装的软件包:

 

$ sudo aptitude upgrade -y

 

第 2 步:下载必要的构建工具

 

接下来,让我们安装Essential Build Tools。在 Linux 上构建和编译应用程序需要这组工具和库。

$ sudo aptitude install -y build-essential

 

第 3 步:安装模块和依赖项

现在让我们下载并安装Apache 反向代理所需的模块和库。

$ sudo aptitude install -y libapache2-mod-proxy-html libxml2-dev

 

第 4 步:启用模块

在启用扩展之前,验证其正确安装至关重要。您可以使用以下命令来显示可用模块的列表:

$ a2enmod
a2enmod
终端中的 a2enmod 命令

执行a2enmod命令时,系统会提示您选择要启用的模块。要简化流程并在单个命令中指定多个模块:

$ proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html

 

您还可以单独激活每个模块:

$ a2enmod proxy 
$ a2enmod proxy_http
$ a2enmod proxy_ajp 
$ a2enmod rewrite 
$ a2enmod deflate 
$ a2enmod headers 
$ a2enmod proxy_balancer 
$ a2enmod proxy_connect 
$ a2enmod proxy_html

某些模块默认处于活动状态。用于a2enmod确保它们真正启用。

步骤 5:更改默认配置

为了实现Apache Web服务器代理功能,我们需要编辑/etc/apache2/sites-enabled目录中的默认配置文件000-default.conf

$ nano /etc/apache2/sites-enabled/000-default.conf

 

我们使用mod_virtualhost 和 mod_proxy扩展设置虚拟代理主机。您可以根据您的需要自定义代码。

<VirtualHost *:*>
        ProxyPreserveHost On

        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example:
        ProxyPass / http://0.0.0.0:8080/
        ProxyPassReverse / http://0.0.0.0:8080/

        ServerName localhost
    </VirtualHost>

 

Ctrl+XY保存更改并关闭文本编辑器。

步骤 6:配置负载均衡

如果运行多个后端服务器,建议使用负载均衡来分配负载。

您可以使用以下代码作为模板并将其插入标准配置文件中:

<Proxy balancer://mycluster>
        # Define back-end servers:

        # Server 1
        BalancerMember http://0.0.0.0:8080/

        # Server 2
        BalancerMember http://0.0.0.0:8081/
    </Proxy>

    <VirtualHost *:*>
        # Apply VH settings as desired
        # However, configure ProxyPass argument to
        # use "mycluster" to balance the load

        ProxyPass / balancer://mycluster
    </VirtualHost>

第 7 步:设置 SSL 支持

要使用Apache SSL进行加密连接和证书,您必须启用第二个虚拟主机。

Listen 443

    NameVirtualHost *:443
    <VirtualHost *:443>

        SSLEngine On

        # Set the path to SSL certificate
        # Usage: SSLCertificateFile /path/to/cert.pem
        SSLCertificateFile /etc/apache2/ssl/file.pem


        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example:
        ProxyPass / http://0.0.0.0:8080/
        ProxyPassReverse / http://0.0.0.0:8080/

        # Or, balance the load:
        # ProxyPass / balancer://balancer_cluster_name

    </VirtualHost>

 

 

第 8 步:重新启动 Apache

完成所有配置后,重新启动Apache Web 服务器以使更改生效。

$ service apache2 restart

现在,Apache 反向代理应该将请求转发到您的后端服务器。

THE END