温馨提示×

ubuntu apache2怎样配置代理

小樊
49
2026-10-25 17:01:40
栏目: 智能运维

在 Ubuntu 上通过 Apache2 配置代理,通常使用的是 mod_proxy 模块。下面按常见场景给你说明。


一、启用代理模块

sudo a2enmod proxy
sudo a2enmod proxy_http
# 如果需要 HTTPS 反向代理
sudo a2enmod proxy_https
# 如果需要 WebSocket
sudo a2enmod proxy_wstunnel

启用后重启 Apache:

sudo systemctl restart apache2

二、反向代理(最常见)

示例:将 /app 代理到本地 8080 端口

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

sudo nano /etc/apache2/sites-available/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 proxy.conf
sudo systemctl reload apache2

三、代理整个域名(反向代理)

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

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

四、HTTPS 反向代理(SSL)

先启用 SSL:

sudo a2enmod ssl
sudo a2ensite default-ssl

示例:

<VirtualHost *:443>
    ServerName example.com
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/example.crt
    SSLCertificateKeyFile /etc/ssl/private/example.key

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

五、正向代理(不推荐,少用在服务器)

<VirtualHost *:80>
    ProxyRequests On
    ProxyVia On

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

⚠️ 正向代理务必加访问控制,否则会变成开放代理。


六、常见问题

1. 502 Bad Gateway

  • 后端服务未启动
  • 端口写错
  • 防火墙限制

2. WebSocket 不生效

需加:

ProxyPass /ws ws://127.0.0.1:8080/ws
ProxyPassReverse /ws ws://127.0.0.1:8080/ws

3. 静态资源路径错误

确认 ProxyPassReverse 已配置。


如果你能说明:

  • 是 反向还是正向代理
  • 代理到 本地还是远程
  • 是否使用 HTTPS / WebSocket

我可以给你更精确的配置。

0 踩