在 CentOS 上使用 Apache 做反向代理(Reverse Proxy),通常借助 mod_proxy 及相关模块来实现。下面以 CentOS 7/8 + Apache(httpd) 为例,给你一个完整、可操作的步骤说明。
# CentOS 7
yum install httpd -y
# CentOS 8 / Stream
dnf install httpd -y
启动并设置开机自启:
systemctl start httpd
systemctl enable httpd
Apache 反向代理需要以下模块:
mod_proxymod_proxy_httpmod_proxy_balancer(负载均衡)查看是否已加载:
httpd -M | grep proxy
若未加载,编辑配置文件或确认模块存在(CentOS 默认通常已编译):
# 一般在 /etc/httpd/conf.modules.d/00-proxy.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
如被注释,取消注释后重启:
systemctl restart httpd
将 http://yourdomain.com/ 反向代理到后端服务:
http://127.0.0.1:8080编辑或新建配置文件:
vi /etc/httpd/conf.d/proxy.conf
内容示例:
<VirtualHost *:80>
ServerName yourdomain.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ErrorLog /var/log/httpd/proxy_error.log
CustomLog /var/log/httpd/proxy_access.log combined
</VirtualHost>
说明:
ProxyRequests Off:关闭正向代理(安全)ProxyPass:请求转发规则ProxyPassReverse:修正后端返回的 Location 头ProxyPass /api/ http://127.0.0.1:9000/
ProxyPassReverse /api/ http://127.0.0.1:9000/
即:
http://yourdomain.com/api/* → http://127.0.0.1:9000/*如果你使用 Let’s Encrypt:
dnf install certbot python3-certbot-apache -y
certbot --apache -d yourdomain.com
Certbot 会自动帮你配置 HTTPS + 反向代理。
手动示例(片段):
<VirtualHost *:443>
ServerName yourdomain.com
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/privkey.pem
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
如果后端是本机服务,可能需要允许 Apache 联网:
setsebool -P httpd_can_network_connect 1
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
apachectl configtest
systemctl restart httpd
查看日志:
tail -f /var/log/httpd/proxy_error.log
| 场景 | 示例 |
|---|---|
| 代理 Java / Node | Tomcat、Spring、Node.js |
| 统一端口 | 80/443 暴露,内部多端口 |
| 负载均衡 | mod_proxy_balancer |
| 隐藏后端 | 提高安全性 |
如果你有具体后端服务(如 Tomcat / Node / Docker / 内网 IP),可以告诉我,我可以直接给你一份针对性配置。