在 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>
先启用 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>
⚠️ 正向代理务必加访问控制,否则会变成开放代理。
需加:
ProxyPass /ws ws://127.0.0.1:8080/ws
ProxyPassReverse /ws ws://127.0.0.1:8080/ws
确认 ProxyPassReverse 已配置。
如果你能说明:
我可以给你更精确的配置。