使用 ProxyPass 通过 Apache 提供 Rails 服务

使用 ProxyPass 通过 Apache 提供 Rails 服务

我有一个正在运行的 Rails 应用程序,我想通过另一个域名来提供服务。因此,我修改了 VirtualHost,将其添加为 ServerAlias:

<VirtualHost *:80>
        DocumentRoot /home/my/app/public
        ServerName long_server_name.com
        ServerAlias short_name.com
        RewriteEngine On

        ProxyRequests Off
        ProxyPass / http://localhost:3000/
        ProxyPassReverse / http://localhost:3000/
        ProxyPreserveHost on   

         <Proxy *>
          Order deny,allow
          Allow from all
        </Proxy>
</VirtualHost> 

但是,由于某些奇怪的原因,当我访问 short_name.com 时,它会给我 Fedora 测试页面。

如果我直接访问 /public 下的文档(例如 short_name.com/somepage.html),我能够找到它们。但 Rails 不会处理这些请求。访问根路径应该会重定向到登录(通过 rails)。

有什么想法吗?我该如何调试正在发生的事情?

(可能存在不相关的警告:“short_name.com”是一个从其他人那里租用的 URL,因为他们是所有者。)

答案1

基于你几乎肯定在处理与上次相同的问题,并且似乎没有解决其中涉及的大多数问题,我将重申我的先前的建议

看起来他们确实在使用代理。您可以通过访问网站并查看源 IP 来验证这一点 - 如果源 IP 是您的 IP,那么他们就不是在使用代理,而是在做一些事情真的很奇怪,否则源 IP 应该是他们的代理服务器的 IP。我想他们的代理可能会对设置产生各种不愉快的影响——Host例如,如果他们的代理服务器发送的标头不是您所期望的,那么这自然会导致问题。出于这个原因,我总是将提供的虚拟主机名称记录在我的“默认虚拟主机”日志中——它向我展示了人们可能从哪里访问我。

至于设置,我会强烈建议让他们更改 DNS 以直接指向您的服务器。您“租用”域名无关紧要;DNS 仍然可以得到妥善管理。代理唯一有意义的情况是,他们只将网站的一部分重定向到您,并在本地提供同一域上的其他内容。

相关内容