CentOS 8下Apache反向代理问题:访问proxy.domain.com跳转至storage.domain.com
反向代理跳转异常问题排查与解决
我在CentOS 8服务器上使用Apache2配置反向代理,Nextcloud已在storage.domain.com正常运行。现在需要为proxy.domain.com配置反向代理,指向本地8181端口,但访问proxy.domain.com时会跳转到storage.domain.com,而非预期的127.0.0.1:8181页面。
当前配置文件
proxyfile.conf(反向代理配置)
ServerName proxy.domain.com <VirtualHost *:80> ServerName proxy.domain.com <Location /> ProxyPass http://127.0.0.1:8181/ ProxyPassReverse http://127.0.0.1:8181/ ProxyPreserveHost On </Location> </VirtualHost>
nextcloud.conf(Nextcloud配置)
<VirtualHost *:80> DocumentRoot /var/www/nextcloud/ ServerName storage.domain.com Redirect permanent / https://storage.domain.com <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000" </IfModule> <Directory /var/www/nextcloud/> Require all granted AllowOverride All Options FollowSymLinks MultiViews <IfModule mod_dav.c> Dav off </IfModule> </Directory> RewriteEngine on RewriteCond %{SERVER_NAME} =storage.domain.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
问题排查与解决
修正proxyfile.conf的无效配置
当前ServerName proxy.domain.com写在了<VirtualHost>块外部,属于无效配置,Apache仅会读取虚拟主机块内的ServerName。删除块外的ServerName,修正后的配置如下:<VirtualHost *:80> ServerName proxy.domain.com <Location /> ProxyPass http://127.0.0.1:8181/ ProxyPassReverse http://127.0.0.1:8181/ ProxyPreserveHost On </Location> </VirtualHost>检查Apache默认站点配置
若服务器存在未指定ServerName的默认站点配置(如000-default.conf),Apache会将第一个加载的虚拟主机(此处为nextcloud.conf)作为默认站点,导致未匹配的域名被导向storage.domain.com。- 查看启用的配置文件:
ls /etc/httpd/conf.d/ - 若有默认配置文件,添加
ServerName为非冲突域名,或直接删除该默认配置。
- 查看启用的配置文件:
确认反向代理模块已加载
确保Apache已加载反向代理所需模块:- 执行命令验证:
httpd -M | grep proxy - 需确认
proxy_module、proxy_http_module已加载;若未加载,在/etc/httpd/conf.modules.d/00-proxy.conf中启用这些模块。
- 执行命令验证:
验证配置并重启服务
- 测试配置语法正确性:
httpd -t - 重启Apache服务:
systemctl restart httpd - 再次访问
proxy.domain.com,确认是否正常指向8181端口的服务。
- 测试配置语法正确性:
内容的提问来源于stack exchange,提问作者rowansc1
相关产品推荐
相关产品推荐

