You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CentOS7的Apache服务器同时运行WSGI应用与常规网站?

问题排查:Apache中Flask应用httpme.tk跳转到现有站点mniek.ru的解决方案

核心问题分析

从你提供的配置和日志来看,httpme.tk访问时跳转到mniek.ru,主要是虚拟主机配置的匹配逻辑和细节问题导致的,我们逐一拆解排查:

1. VirtualHost端口配置不明确

你的http_error_api.conf中使用了<VirtualHost *>,而mniek.ru的配置明确指定了<VirtualHost *:80>和<VirtualHost *:443>。Apache在匹配虚拟主机时,会优先选择端口定义更精确的配置;同时,你的Flask应用配置里还沿用了Apache 2.2的旧权限语法,可能导致目录访问规则不生效,间接引发请求 fallback 到默认站点。

2. 虚拟主机加载与匹配优先级

虽然http_error_api.conf文件名以h开头会先于mniek.ru.conf加载,但如果前者的配置存在语法或规则问题,Apache会自动忽略这个虚拟主机,所有未匹配的请求就会落到第一个有效的虚拟主机(也就是mniek.ru的配置)上。


具体修复步骤

步骤1:修正Flask应用的虚拟主机配置

打开/etc/httpd/conf.d/http_error_api.conf,修改以下两处:

# 把模糊的端口改为明确的80端口
<VirtualHost *:80>
ServerName www.httpme.tk
ServerAlias httpme.tk
WSGIDaemonProcess application user=apache group=apache threads=5
WSGIScriptAlias / /var/www/http_error_api/wsgi.py
WSGIScriptReloading On
<Directory /var/www/http_error_api>
WSGIProcessGroup application
WSGIApplicationGroup %{GLOBAL}
# 替换Apache 2.2的旧语法为2.4的标准权限规则
Require all granted
</Directory>
</VirtualHost>

步骤2:确认DNS解析正确性

确保httpme.tk和www.httpme.tk的A记录已经指向你的VPS IP 0.0.26.144。本地可以通过以下命令验证:

ping httpme.tk
nslookup httpme.tk

如果解析结果不是你的VPS IP,需要先修改域名的DNS配置。

步骤3:检查Apache配置语法并重启

运行命令验证所有配置文件的语法是否正确:

httpd -t

如果输出Syntax OK,则重启Apache服务使配置生效:

systemctl restart httpd

如果有语法错误,根据提示修正对应的配置问题(比如括号不闭合、指令拼写错误等)。

步骤4:验证虚拟主机匹配效果

使用curl命令测试请求头,确认httpme.tk是否匹配到正确的虚拟主机:

curl -I http://httpme.tk

如果返回的响应头中包含Flask应用的特征(比如自定义的X-Powered-By字段),说明配置已经生效。


额外优化:消除全局ServerName警告

日志中反复出现的AH00558警告,可以通过在/etc/httpd/conf/httpd.conf中添加全局ServerName解决:

ServerName 0.0.26.144:80

或者使用你的主域名ServerName mniek.ru:80,这不会影响虚拟主机运行,但能消除日志中的冗余警告。


内容的提问来源于stack exchange,提问作者Никита Шишкин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:28:09