温馨提示×

centos apache怎样配反向代理

小樊
38
2026-10-05 21:44:27
栏目: 智能运维

在 CentOS 上使用 Apache 配置反向代理,通常步骤如下(以 CentOS 7/8 为例,Apache 即 httpd)。


一、安装 Apache

# CentOS 7
yum install httpd -y

# CentOS 8
dnf install httpd -y

启动并设置开机自启:

systemctl start httpd
systemctl enable httpd

二、启用代理模块

Apache 反向代理需要以下模块:

  • mod_proxy
  • mod_proxy_http

一般默认已安装,手动确认/启用:

# CentOS 通常已加载,无需手动操作
# 如果使用的是 2.4 版本,检查模块
httpd -M | grep proxy

应看到:

proxy_module (shared)
proxy_http_module (shared)

如未加载,编辑:

vi /etc/httpd/conf.modules.d/00-proxy.conf

确保存在:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

三、配置反向代理

方式一:修改主配置(不推荐)

vi /etc/httpd/conf/httpd.conf

方式二:使用独立配置文件(推荐 ✅)

vi /etc/httpd/conf.d/proxy.conf

示例 1:将 / 代理到后端 8080 端口

<VirtualHost *:80>
    ServerName example.com

    ProxyRequests Off
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

示例 2:只代理某个路径

<VirtualHost *:80>
    ServerName example.com

    ProxyRequests Off
    ProxyPass /api/ http://127.0.0.1:3000/
    ProxyPassReverse /api/ http://127.0.0.1:3000/
</VirtualHost>

四、常见参数说明

ProxyRequests Off        # 关闭正向代理(安全)
ProxyPass / 目标地址     # 请求转发
ProxyPassReverse / 目标地址 # 重写响应头中的地址

五、支持 WebSocket(如 Vue / Node)

ProxyPass /ws/ ws://127.0.0.1:3000/
ProxyPassReverse /ws/ ws://127.0.0.1:3000/

六、防火墙放行

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

七、SELinux(很重要 ⚠)

如果后端在本地其他端口,需允许:

setsebool -P httpd_can_network_connect 1

八、重启 Apache

systemctl restart httpd

九、验证

curl http://localhost/

或浏览器访问域名。


十、常见问题

1. 502 Bad Gateway

  • 后端服务未启动
  • SELinux 限制
  • 防火墙

2. 请求一直转发到自己(死循环)

  • ProxyPass 和 ServerName 配置冲突

如果你有 具体场景(如代理 Tomcat / Node / Java / Docker / HTTPS),可以告诉我,我给你更精确的配置。

0 踩