Linux为Apache http/https Web服务器安装和配置Pound反向代理

时间:2020-01-09 10:41:38  来源:igfitidea点击:

问题描述:如何在Debian Linux下为Apache Web服务器安装和配置Pound反向代理?

解决方法:Pound是反向代理负载平衡服务器。
它接受来自HTTP/HTTPS客户端的请求,并将其分发到一个或多个Web服务器。

HTTPS请求被解密并作为纯HTTP传递到后端。
它将充当:a)服务器负载平衡器b)反向代理服务器c)Apache反向代理等d)它可以检测后端服务器何时发生故障或恢复,并根据以下信息做出负载平衡决策:如果后端服务器发生故障,直到恢复后它才会接收请求e)可以将https请求解密为http请求f)拒绝不正确的请求h)可以在chroot环境中使用(安全功能)

如果定义了多个后端服务器,Pound将根据定义的优先级随机选择其中之一。
默认情况下,Pound会跟踪客户端和后端服务器(会话)之间的关联。

安装软件Pound

执行以下命令以安装Pound:

$ sudo apt-get install pound

如果您使用的是RHEL/CentOS,请在此处获取Pound rpm并执行以下命令:

# rpm -ivh pound*

如果您使用的是FreeBSD,请执行:

# cd /usr/ports/www/pound/ && make install clean

Pound配置文件

  • 在Debian/Ubuntu下的默认文件位于/etc/pound/pound.cfg
  • 在FreeBSD下,它位于/usr/local/etc/pound.cfg中(您需要创建此文件)
  • 在RHEL/CentOS下,您需要在/etc/pound.cfg中创建文件。

配置示例:HTTP代理

将192.54.1.5端口80请求上的所有传入请求转发到在8080端口运行的192.168.1.5 Apache服务器:

打开/etc/pound/pound.cfg文件:

# vi /etc/pound/pound.cfg

要将HTTP请求转换为本地内部HTTP服务器,请输入(确保端口8080上的192.168.1.5 Apache运行列表):

ListenHTTP
         Address 192.54.1.5
         Port    80
         Service
                  BackEnd
                       Address 192.168.1.5
                       Port    8080
                  End
          End
End

保存并关闭文件。
重新启动Pound:

# /etc/init.d/pound restart

下面的示例将所有HTTP/HTTPS请求分发到两个Web服务器:

ListenHTTP
          Address 192.54.1.5
          Port    80
End

ListenHTTPS
         Address 192.54.1.5
         Port    443
         Cert    "/etc/ssl/local.server.pem"
End
Service
                  BackEnd
                      Address 192.168.1.5
                      Port    80
                  End
                  BackEnd
                      Address 192.168.1.6
                      Port    80
                  End
End

为了进行测试,您可以通过输入以下命令来生成自签名的ssl证书(/etc/ssl/local.server.pem):

# cd /etc/ssl && openssl req -x509 -newkey rsa:1024 -keyout local.server.pem -out local.server.pem -days 365 -nodes

Pound日志文件

默认情况下,使用syslog的Pound日志消息:

# tail -f /var/log/messages
# grep pound /var/log/messages

示例完整的配置文件

## Minimal sample pound.cfg
######################################################################
## global options:
User		"www-data"
Group		"www-data"
#RootJail	"/chroot/pound"
## Logging: (goes to syslog by default)
##	0	no logging
##	1	normal
##	2	extended
##	3	Apache-style (common log format)
LogLevel	1
## check backend every X secs:
Alive		30
## use hardware-accelleration card supported by openssl(1):
#SSLEngine	""

######################################################################
## listen, redirect and ... to:
# Here is a more complex example: assume your static images (GIF/JPEG) are to be served from  a  single  back-end  192.168.0.10.  In
#       addition,  192.168.0.11  is  to  do  the  hosting for www.myserver.com with URL-based sessions, and 192.168.0.20 (a 1GHz PIII) and
#       192.168.0.21 (800Mhz Duron) are for all other requests (cookie-based sessions).  The logging will be done by the back-end servers.
#       The configuration file may look like this:
              # Main listening ports
              ListenHTTP
                  Address 192.54.1.10
                  Port    80
                  Client  10
              End
              ListenHTTPS
                  Address 192.54.1.10
                  Port    443
                  Cert    "/etc/pound/pound.pem"
                  Client  20
              End

              # Image server
              Service
                  URL ".*.(jpg|gif)"
                  BackEnd
                      Address 192.168.1.10
                      Port    80
                  End
              End
             # Virtual host www.myserver.com
              Service
                  URL         ".*sessid=.*"
                  HeadRequire "Host:.*www.theitroad.com.*"
                  BackEnd
                      Address 192.168.1.11
                      Port    80
                  End
                  Session
                      Type    PARM
                      ID      "sessid"
                      TTL     120
                  End
              End

              # Everybody else
              Service
                  BackEnd
                      Address 192.168.1.20
                      Port    80
                      Priority 5
                  End
                  BackEnd
                      Address 192.168.1.21
                      Port    80
                      Priority 4
                  End
                  Session
                      Type    COOKIE
                      ID      "userid"
                      TTL     180
                  End
              End