4

我有一个奇怪的问题,我有两个单独的 url 指向同一个 Rails 应用程序

  1. staging.abcxyz.com
  2. 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>

问题

  1. 我不明白为什么这会是权限问题,因为 staging.abcxyz.com 已经可以访问该文件夹。我是否在这里遗漏了一些东西,因为两者都是从同一个目录提供的

  2. 是否可以与PassengerAppGroupName 做一些事情-但我并不特别担心让单独的工作人员发送响应特定请求

我真的很感激这方面的任何帮助。谢谢。

更新

我注意到的一件事是,如果我使用 R [redirect] 标志而不是 P [proxy],应用程序可以工作并重定向到正确的 url,但我想成为一个不反映在浏览器上的内部重定向。

4

0 回答 0