下面以 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>
sudo a2enmod ssl
<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 对比),我可以给你更针对性的配置示例。