用apache httpd来实现反向代理
Apache httpd就是Apache HTTP Server, 它于1995年发布。Apache HTTP Server项目致力于开发和维护适用于现代操作系统(包括 UNIX 和 Windows)的开源 HTTP server。该项目的目标是提供安全、高效且可扩展的服务server,并提供与当前 HTTP 标准同步的 HTTP 服务。
正向代理与反向代理(这篇文章讲的很通俗易懂):
- 正向代理是为客户端转发请求,它是一个位于客户端和目标服务器之间的服务器(代理服务器),为了从目标服务器获取内容,客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。比如可用代理服务器加速访问github等国外技术网站。
- 反向代理是为服务端转发请求,客户端将请求发送到反向代理服务器,反向代理服务器再将请求转发给真正的服务器来处理请求;真正的服务器将处理结果发送给反向代理,再由反向代理构建响应并发送给客户端。反向代理可以实现负载均衡。
用Apache httpd实现反向代理的基本步骤:
- 安装apache httpd
yum install httpd
- 创建文件夹用于存储httpd的日志和用户信息
sudo mkdir -p /usr/local/etc/httpd/
sudo mkdir -p /var/log/httpd/
- (可选)如果要是反向代理添加用户认证,可以使用htpasswd创建用户认证的文件, 下面命令表示创建一个test的用户,命令执行成功会让你输密码
sudo htpasswd -c /usr/local/etc/httpd/users test
- 修改httpd的配置文件
vim /etc/httpd/conf/httpd.conf
# a. 将用户和group从apache修改为daemon; "User daemon Group daemon"# b. 将下面内容放入到httpd.conf中, 表示将监听8088端口。并将服务转发到8089端口上来反向代理8089端口上的服务,这里的配置添加了前面创建的用户test来进行用户认证,不需要也可以不添加。
listen 8088
<VirtualHost *:8088>ErrorLog "/var/log/httpd/agent-error_log"CustomLog "/var/log/httpd/agent-access_log" common<Proxy *>Order deny,allowAllow from allAuthtype BasicAuthname "Password Required"AuthUserFile /usr/local/etc/httpd/usersRequire user test</Proxy>ProxyPass / http://localhost:8089/ProxyPassReverse / http://localhost:8089/
</VirtualHost>
- 检查httpd配置文件是否正确,以及重启httpd服务
# 检查httpd配置文件是否正确apachectl configtest
# 重启httpd服务sudo systemctl restart httpd.service