温馨提示×

centos apache如何代理

小樊
44
2026-09-18 02:54:19
栏目: 智能运维

在 CentOS 上用 Apache 做代理,通常有两种常见场景:

  1. 正向代理(Forward Proxy):客户端通过 Apache 访问外网
  2. 反向代理(Reverse Proxy):把请求转发给后端服务(如 Tomcat、Node、Python、其他端口)

下面以 CentOS 7/8 + Apache(httpd) 为例说明。


一、基础准备

1. 安装 Apache

yum install httpd -y
# 或 CentOS 8
dnf install httpd -y

2. 启动并设置开机自启

systemctl start httpd
systemctl enable httpd

3. 开启代理模块

Apache 默认未加载代理模块,需要确认:

httpd -M | grep proxy

若没有,编辑配置文件(通常已默认加载):

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
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so  # WebSocket

重启 Apache:

systemctl restart httpd

二、反向代理(最常用)

示例:将 /api 代理到 127.0.0.1:8080

编辑虚拟主机或主配置:

vi /etc/httpd/conf.d/proxy.conf
<VirtualHost *:80>
    ServerName example.com

    ProxyRequests Off
    ProxyPreserveHost On

    ProxyPass /api http://127.0.0.1:8080/
    ProxyPassReverse /api http://127.0.0.1:8080/
</VirtualHost>

重启:

systemctl restart httpd

✅ 访问 http://example.com/api → 实际访问后端 8080


三、代理整个站点

<VirtualHost *:80>
    ServerName app.example.com

    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

四、WebSocket 代理(如 Vue / React / Node)

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

五、正向代理(不常用,内网出口)

<VirtualHost *:8080>
    ProxyRequests On
    ProxyVia On

    <Proxy "*">
        Require ip 192.168.1.0/24
    </Proxy>
</VirtualHost>

⚠️ 正向代理有安全风险,不建议公网开放。


六、SELinux 注意事项(很重要)

CentOS 默认开启 SELinux,否则代理会 503:

setsebool -P httpd_can_network_connect 1

七、防火墙

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

八、常见问题

503 Service Unavailable

  • 后端服务没启动
  • SELinux 限制
  • ProxyPass 地址错误

403 Forbidden

  • 目录权限
  • Require 配置错误

如果你有 具体场景(如代理 Tomcat / Docker / HTTPS / 多端口),可以告诉我,我给你完整配置示例。

0