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