介绍
Apache是一个经过测试的HTTP服务器,可以访问各种强大的扩展。 虽然在运行反向代理方面可能不是最好的选择,但是已经依赖于Apache的系统管理员可以使用可用的丰富功能集作为其应用服务器的网关。 在大多数情况下,这将转换为从服务器设置中删除一个附加层,或者需要使用另一个工具来重定向连接。
在这篇DigitalOcean文章中,我们将看到在Ubuntu 13上设置Apache,并将其用作反向代理,以欢迎传入的连接并将它们重定向到在同一网络上运行的应用程序服务器。 为此,我们将使用并与mod_proxy的扩展和其他一些相关的Apache模块工作。
词汇表
Apache
2. Apache作为反向代理使用mod_proxy
3.安装Apache和mod_proxy
- 更新操作系统
- 获得基本构建工具
- 获取模块和依赖关系
4.配置Apache到代理连接
- 激活模块
- 修改默认配置
- 启用负载平衡
- 启用SSL支持
- 重新启动Apache
Apache
Apache HTTP服务器不需要介绍,因为它可能是最有名和最受欢迎的Web服务器存在。 可以在许多不同的平台和设置上轻松运行Apache。 该应用程序自带了大量的第三方模块来处理不同的任务(国防部重写基于规则的URL重写),其中一人,虽然时下相对忽视,是*国防部代理*:Apache的模块来实现的代理(或网关)用于在后端运行的服务器。
提示:根据一些文章,Apache的名字来自服务器的“修修补补”的性质-也就是说,它是应用程序修补程序(或模块 )的集合。
注意:要了解更多关于Apache,你可以看看关于这一主题的维基百科条目- Apache HTTP服务器 。
Apache作为反向代理使用mod_proxy
国防部代理重定向连接Apache模块(即网关,并使它们通过)。 它像任何其他模块一样启用使用,配置非常基本(或标准),与其他模块一致。 国防部代理不只是一个单一的模块,但它们的集合,每个带来一系列新的功能。
其中一些模块是:
mod_proxy的:管理连接和重定向他们的Apache主要代理模块。
国防部代理 HTTP:该模块实现了HTTP和HTTPS协议的代理功能。
MOD FTP 代理 :此模块不相同,但对于FTP协议。
国防部代理连接:这一个是用于SSL隧道。
国防部代理 AJP:用于与AJP协议工作。
国防部代理 wstunnel:用于与网络插座(即WS和WSS)工作。
国防部代理平衡器:用于集群和负载均衡。
mod_cache的:用于缓存。
mod_headers中:用于管理HTTP标头。
mod_deflate模块:用于压缩。
注意:要了解更多关于Apache和mod_proxy的,你可以在主题查看官方Apache文档在这里 。
安装Apache和mod_proxy
注意:这里给出的说明保持短暂的,因为机会是你已经安装了Apache或不知道如何使用它。 尽管如此,通过遵循以下步骤,您可以在几分钟内获得一个运行Apache的新Ubuntu VPS。
更新操作系统
我们将从准备我们的虚拟服务器开始。 我们将首先升级默认的可用组件,以确保我们有最新的一切。
更新软件源列表并升级日期应用程序:
aptitude update
aptitude -y upgrade
获得基本构建工具
让我们继续得到应用建设的基本包- 构建必要的 。 此包包含从源代码安装某些事情必需的工具。
运行以下命令来安装build-essential
包:
aptitude install -y build-essential
获取模块和依赖关系
接下来,我们要得到模块和依赖。
运行以下命令以安装它们:
aptitude install -y libapache2-mod-proxy-html libxml2-dev
配置Apache到代理连接
激活模块
在配置Apache的,我们要实现我们将使用在本教程中,或者是必需的模块可能会派上用场的未来。
首先,让我们验证所有模块是否正确安装并准备好激活。
运行以下命令以获取可用Apache模块的列表:
a2enmod
# You will be presented with an output similar to:
# Your choices are: access_compat actions alias allowmethods asis auth_basic auth_digest auth_form authn_anon authn_core authn_dbd authn_dbm authn_file authn_socache authnz_ldap authz_core authz_dbd authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex buffer cache cache_disk cache_socache cgi cgid charset_lite data dav dav_fs dav_lock dbd deflate dialup dir dump_io echo env expires ext_filter file_cache filter headers heartbeat heartmonitor include info lbmethod_bybusyness lbmethod_byrequests lbmethod_bytraffic lbmethod_heartbeat ldap log_debug log_forensic lua macro mime mime_magic mpm_event mpm_itk mpm_prefork mpm_worker negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_express proxy_fcgi proxy_fdpass proxy_ftp proxy_html proxy_http proxy_scgi proxy_wstunnel ratelimit reflector remoteip reqtimeout request rewrite sed session session_cookie session_crypto session_dbd setenvif slotmem_plain slotmem_shm socache_dbm socache_memcache socache_shmcb speling ssl status substitute suexec unique_id userdir usertrack vhost_alias xml2enc
# Which module(s) do you want to enable (wildcards ok)?
一旦你提示你的愿望模块的选择,你可以通过下面的行上市的模块名称:
模块列表:
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
注意:有些模块可能在默认情况下启用。 尝试启用它们两次只是确保它们是活动的。
修改默认配置
在这一步中,我们将看到如何修改默认的配置文件000-default.conf
内/etc/apache2/sites-enabled
设立“代理”功能。
运行以下命令使用纳米文本编辑器编辑默认的Apache虚拟主机:
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 + X,并用Y确认保存并退出。
注意:要了解更多关于虚拟主机的配置,可以通过点击查看关于这个问题的详细的Apache手册在这里 。
启用负载平衡
如果您有多个后端服务器,分发代理他们,当连接一个好办法,就是使用Apache的负载平衡功能。
开始编辑喜欢上一步中的虚拟主机设置,但使用下面的配置示例这个时候:
<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>
启用SSL反向代理支持
如果你正在处理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>
重新启动Apache
一旦您对配置感到满意,您将需要重新启动云服务器以使更改生效。
执行以下命令重新启动Apache:
service apache2 restart
就是这样!
您现在可以访问您的VPS,Apache将反向代理与您的后端应用程序服务器的连接。