在 CentOS 上使用 Apache 配置反向代理,通常步骤如下(以 CentOS 7/8 为例,Apache 即 httpd)。
# CentOS 7
yum install httpd -y
# CentOS 8
dnf install httpd -y
启动并设置开机自启:
systemctl start httpd
systemctl enable httpd
Apache 反向代理需要以下模块:
mod_proxymod_proxy_http一般默认已安装,手动确认/启用:
# CentOS 通常已加载,无需手动操作
# 如果使用的是 2.4 版本,检查模块
httpd -M | grep proxy
应看到:
proxy_module (shared)
proxy_http_module (shared)
如未加载,编辑:
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
vi /etc/httpd/conf/httpd.conf
vi /etc/httpd/conf.d/proxy.conf
/ 代理到后端 8080 端口<VirtualHost *:80>
ServerName example.com
ProxyRequests Off
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
ProxyRequests Off
ProxyPass /api/ http://127.0.0.1:3000/
ProxyPassReverse /api/ http://127.0.0.1:3000/
</VirtualHost>
ProxyRequests Off # 关闭正向代理(安全)
ProxyPass / 目标地址 # 请求转发
ProxyPassReverse / 目标地址 # 重写响应头中的地址
ProxyPass /ws/ ws://127.0.0.1:3000/
ProxyPassReverse /ws/ ws://127.0.0.1:3000/
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
如果后端在本地其他端口,需允许:
setsebool -P httpd_can_network_connect 1
systemctl restart httpd
curl http://localhost/
或浏览器访问域名。
ProxyPass 和 ServerName 配置冲突如果你有 具体场景(如代理 Tomcat / Node / Java / Docker / HTTPS),可以告诉我,我给你更精确的配置。