---
title: 如何使用Apache做反向代理
date: 2023-01-31 21:19:00 +0800
categories: [工具]
tags: []
pin: false
---
> 本文撰写时间:2018-07-21 09:11,修改时间:2022-07-12
## 一、反向代理
- 正向代理:服务器A 替代客户端去请求另外一台服务器B,将数据返回客户端,这个过程叫正向代理,正向代理隐藏了真实的客户端
- 反向代理:服务器A 将客户端的请求转发给了服务器B去处理,客户端不知道服务器B的存在,这个过程叫反向代理,反向代理隐藏了真实的服务器
反向代理简单理解如下图示:

在同一台服务器内,假设服务器对外网只开放了80端口,当客户端请求80端口的http服务,转发给其他端口服务来处理,这个过程也是反向代理。这篇博客给大家演示Apache反向代理设置,使的得一台服务器上同时支持运行多端口服务(如同时运行PHP和Java项目)。
## 二、工具
- 1. Apache 2.4.33
- 2. JDK 1.8 + Tomcat 8.5
## 三、步骤
### 3.1、开启mod_proxy.so和mod_proxy_http.so模块
在Apache的`httpd.conf`配置文件中,添加以下两行配置
```shell
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
```
### 3.2、设置转发
进入Apache安装目录下的/conf/extra目录,如果你使用的http默认端口,更改httpd-vhosts.conf文件,
```xml
ServerName test.cn #域名
ProxyPreserveHost On # 开启反向代理
ProxyRequests Off # 关闭正向代理
ProxyPass / http://127.0.0.1:8080/ #映射地址
ProxyPassReverse / http://127.0.0.1:8080/ #映射302重定向的地址
```
假如使用的是https加密端口的话,更改httpd-ssl.conf文件,如下
```xml
ServerName test.cn #域名
SSLEngine on
SSLCertificateFile "证书所在目录/fullchain.pem"
SSLCertificateKeyFile "证书所在目录/privkey.pem"
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
```
保存配置重启Apache,在浏览器输入直接输入域名就可以访问到8080端口的项目了