温馨提示×

如何配置apache2反向代理

小樊
45
2026-09-21 17:22:00
栏目: 编程语言

下面以 Linux(Ubuntu/Debian)上的 Apache2 为例,说明如何配置 反向代理(Reverse Proxy)。


一、启用必要模块

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

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer   # 如需要负载均衡
sudo a2enmod lbmethod_byrequests
sudo a2enmod headers

启用后重启 Apache:

sudo systemctl restart apache2

二、基本反向代理配置

示例:将 http://example.com/app 代理到 http://127.0.0.1:8080

编辑站点配置(推荐新建一个配置文件):

sudo nano /etc/apache2/sites-available/reverse-proxy.conf

内容示例:

<VirtualHost *:80>
    ServerName example.com

    ProxyRequests Off
    ProxyPreserveHost On

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

启用站点:

sudo a2ensite reverse-proxy.conf
sudo systemctl reload apache2

✅ 访问 http://example.com/app 就会由后端 8080 端口处理。


三、代理整个域名(根路径)

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

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

四、HTTPS(推荐)

1. 启用 SSL 模块

sudo a2enmod ssl

2. 配置 HTTPS 反向代理

<VirtualHost *:443>
    ServerName example.com

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/example.com.crt
    SSLCertificateKeyFile /etc/ssl/private/example.com.key

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

(也可用 Let’s Encrypt 自动签发证书)


五、常见优化参数

ProxyPass /app http://127.0.0.1:8080/ connectiontimeout=5 timeout=30
RequestHeader set X-Forwarded-Proto "https"

六、负载均衡(示例)

<Proxy balancer://mycluster>
    BalancerMember http://127.0.0.1:8080
    BalancerMember http://127.0.0.1:8081
</Proxy>

ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/

七、排错建议

  • 查看日志:
    sudo tail -f /var/log/apache2/error.log
    
  • 确保后端服务已启动
  • 检查防火墙(如 ufw)
  • ProxyRequests Off 一定要设置(防止成为开放代理)

如果你有 具体场景(如 Docker、Node.js、Spring Boot、WebSocket、Nginx 对比),我可以给你更针对性的配置示例。

0 踩