我有一个奇怪的问题,我有两个单独的 url 指向同一个 Rails 应用程序
- staging.abcxyz.com
- staging.abcttt.com
我的设置与乘客一起运行 apache。这里要注意的重要一点是,两个 url 都指向 Document Root 目录中的同一个 Rails 应用程序,并且在内部由不同的 url 提供服务。
问题
当我尝试访问 staging.abcxyz.com 时,它可以工作并且应用程序被渲染并且一切都按预期工作。
当我尝试访问 staging.abcttt.com 时,apache 返回 403 禁止。
阿帕奇配置
这是对我不起作用的 url 的 apache 配置。它与对 URL 更改的预期工作完全相同。
<VirtualHost *:80>
ServerName staging.abcttt.com
ServerAlias www.staging.abcttt.com
DocumentRoot /srv/abcxyz/current/public/
<Directory /srv/abcxyz/current/public/>
Order allow,deny
Allow from all
Options FollowSymLinks
AllowOverride None
</Directory>
RewriteEngine on
RewriteRule ^/$ /s/home [P]
RailsAutoDetect On
RackEnv staging
RailsEnv staging
RailsSpawnMethod smart
## PassengerAppGroupName
#
# By default, Passenger groups applcations by the the path they are served out of,
# ie /srv/yourapp/current.
#
# At times, it may be useful be serving the same app from multiple vhosts, but have
# them be have different workers. For example, you may have a /ping URL that needs to
# respond quickly, without being affected by the rest of the app. In this case, you can:
#
# * create a new vhost pointing at the same app
# * set PassengerAppGroupName to ping
# * configure a proxy to forward /ping to the new vhost
PassengerAppGroupName abcxyz
# Deflate
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/javascript application/json
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
RequestHeader set X-Request-Start "%t"
RewriteEngine On
# Check for maintenance file and redirect all requests
ErrorDocument 503 /system/maintenance.html
RewriteCond %{REQUEST_URI} !\.(css|jpg|png|gif)$
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /system/maintenance.html [R=503,L]
# Rewrite index to check for static
RewriteCond %{THE_REQUEST} ^(GET|HEAD)
RewriteCond %{DOCUMENT_ROOT}/index.html -f
RewriteRule ^/?$ /index.html [QSA,L]
# Rewrite to check for Rails non-html cached pages (i.e. xml, json, atom, etc)
RewriteCond %{THE_REQUEST} ^(GET|HEAD)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f
RewriteRule ^(.*)$ $1 [QSA,L]
# Rewrite to check for Rails cached html page
RewriteCond %{THE_REQUEST} ^(GET|HEAD)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.html -f
RewriteRule ^(.*)$ $1.html [QSA,L]
</VirtualHost>
问题
我不明白为什么这会是权限问题,因为 staging.abcxyz.com 已经可以访问该文件夹。我是否在这里遗漏了一些东西,因为两者都是从同一个目录提供的
是否可以与PassengerAppGroupName 做一些事情-但我并不特别担心让单独的工作人员发送响应特定请求
我真的很感激这方面的任何帮助。谢谢。
更新
我注意到的一件事是,如果我使用 R [redirect] 标志而不是 P [proxy],应用程序可以工作并重定向到正确的 url,但我想成为一个不反映在浏览器上的内部重定向。