【问题标题】:Apache giving a 400 Error on a FastCGI VirtualHostApache 在 FastCGI 虚拟主机上给出 400 错误
【发布时间】:2010-09-27 21:20:36
【问题描述】:

每当我访问由 FastCGI 脚本处理的页面时,Apache 都会吐出代码的 HTTP 响应:400 "Bad Request",但没有详细信息。

  • 我已经安装了 mod_fcgid 模块,并在 Apache 配置文件中加载和配置了它
  • 我测试了几个 FastCGI 脚本,它们都在直接执行时运行。
  • 适当地提供静态资源。
  • Apache 正在尝试启动脚本,因为当我将 URL 重写为不存在的脚本时它会报错

有人知道我的 Apache Config 出了什么问题吗?

<VirtualHost ip.ad.re.ss:80>
  ServerName   demo.domain.com:80 

  DocumentRoot /var/www/vhosts/domain.com/subdomains/demo/rails/public
  CustomLog  /var/www/vhosts/domain.com/statistics/logs/demo_access_log combined
  ErrorLog  /var/www/vhosts/domain.com/statistics/logs/demo_error_log
  LogLevel info
  Options +FollowSymLinks +ExecCGI -SymLinksIfOwnerMatch
  AddHandler fcgid-script .fcgi

  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
</VirtualHost>

编辑——我已经检查了 mod_rewrite 日志并且 URI 被正确重写了

【问题讨论】:

  • 我从来没有找到解决方案,最后只使用了一个杂种实例来代替。

标签: ruby-on-rails apache cgi fastcgi


【解决方案1】:

好的,还有一件事要尝试。
http://httpd.apache.org/docs/2.2/mod/core.html#loglevel

将日志级别设置为调试并确保它不在生产机器上,因为它会为每个单独的事件(get/put)产生大量输出。

我认为您上面的 FastCGI 示例缺少一些东西,但我承认我已经有一段时间没有做过除了 php 或 python fastcgi 之外的任何事情。
dispatch.fcgi 是什么语言? 您可以从命令行执行它吗?Apache 是否有权执行该文件? ( sudo su apacheaccount )。

更新: 知道你遗漏了一些东西:检查 -> http://fastcgi.coremail.cn/configuration.htm FCGIWrapper 需要告诉快速 cgi 使用什么来执行你的 dispatch.fcgi 文件。

【讨论】:

  • 感谢您的尝试。我更改了LogLevel,但是错误日志是空的,访问日志是正常的,因为我认为Apache不会将其视为错误。它在 ruby​​ 中,是的,dispatch.fcgi 是每个人都可执行和可读的。
  • 哦,是的,dispatch.fcgi 在命令行中仍然可以正常执行
  • 知道你遗漏了一些东西:检查 -> fastcgi.coremail.cn/configuration.htm FCGIWrapper 需要告诉快速 cgi 使用什么来执行你的 dispatch.fcgi 文件。
【解决方案2】:

尝试删除 DOCUMENT_ROOT 重写条件。其次,检查 mod_rewrite 日志指令,它们对于此类奇怪的问题非常有用。

【讨论】:

  • 他们提供的信息非常丰富,我确实有一些问题。重写现在工作正常,但我仍然收到 400 错误。重写日志: RewriteCond: input='/path/to/app/public/' pattern='!-f' => 匹配重写'/' -> 'dispatch.fcgi' 本地路径结果:dispatch.fcgi
猜你喜欢
  • 2014-02-23
  • 2020-03-03
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 2019-10-01
  • 2015-02-01
相关资源
最近更新 更多