gpt4 book ai didi

apache - 根请求在 Apache 中解析为错误的 VirtualHost

转载 作者:行者123 更新时间:2023-12-01 14:41:14 25 4
gpt4 key购买 nike

我有两个网站在 Apache 服务器后面运行。

其中一个服务于对 api.xyzzy.com 的请求

另一个服务于传入的任何其他流量(数十个域、子域等),因此是一个包罗万象的通配符。

使用下面的配置,请求到 http://api.xyzzy.com/ 下的深层链接...转到正确的虚拟主机(第一个),但顶级请求到 http://api.xyzzy.com/改为加载第二个包罗万象的通配符虚拟主机。

我做错了什么?

LoadModule passenger_module /home/webby/.rvm/gems/ruby-1.9.3-p286/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /home/webby/.rvm/gems/ruby-1.9.3-p286/gems/passenger-3.0.18
PassengerRuby /home/webby/.rvm/wrappers/ruby-1.9.3-p286/ruby

NameVirtualHost *:80

<VirtualHost *:80>
ServerName api.xyzzy.com
ServerAlias api.xyzzy.com
RailsEnv production
DocumentRoot /home/webby/rails/current/public
</VirtualHost>

<VirtualHost *:80>
ServerAlias *
<Directory /usr/local/xyzzy/webapps/wwwroot >
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
DocumentRoot /usr/local/xyzzy/webapps/wwwroot
</VirtualHost>

更新:

下面的配置现在似乎按预期工作。这是基于@Winfield 的回答。

看来我的测试可能有误。我的浏览器 (Chrome) 可能会自动完成我输入的带有 https(而非 http)前缀的地址。不幸的是,直到尝试了数十种配置排列后我才注意到这种异常,因此很难说出最终的正确解决方案是什么。我应该一直在命令行上使用 curl 进行更可靠的测试,而不是在浏览器栏中键入。

<VirtualHost *:80>
<Directory /usr/local/xyzzy/webapps/wwwroot >
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
DocumentRoot /usr/local/xyzzy/webapps/wwwroot
</VirtualHost>

<VirtualHost *:80>
ServerAlias api.xyzzy.com
RailsEnv production
DocumentRoot /home/webby/rails/current/public
</VirtualHost>

最佳答案

我认为你最好使用“默认”虚拟主机(首先定义)来解决这个问题,而不是使用通配符虚拟主机。您可以交换顺序并填写正确的服务器名称。这应该区分非 API 主机名以命中默认(第一个)虚拟主机和任何通过主机名匹配 API 以命中 api 虚拟主机。像这样:

<VirtualHost *:80>
ServerName www.xyzzy.com
ServerAlias xyzzy.com
<Directory /usr/local/xyzzy/webapps/wwwroot >
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
DocumentRoot /usr/local/xyzzy/webapps/wwwroot
</VirtualHost>

<VirtualHost *:80>
ServerName api.xyzzy.com
ServerAlias api.xyzzy.com
RailsEnv production
DocumentRoot /home/webby/rails/current/public
</VirtualHost>

关于apache - 根请求在 Apache 中解析为错误的 VirtualHost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13959092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com