愚かな原因によるlighttpdの404エラー


ここ数日Railsの配置を学んで、Robbinに大いに
LinuxプラットフォームでのRuby on Railsのインストールと構成の詳細という熱い血が沸き、手をこすってlighttpd+FastCGIで配置を試してみるつもりだ.先輩の道を行くのは比較的平坦だと言わざるを得ない.すべての構成が完了すると、lighttpdサーバが起動し、問題が発生し、静的ページにアクセスしても問題はありませんが、ダイナミックページは404ページ表示されます.
次に、理由を検索します.
dispatch.fcgiには確かに実行権限があり、コンソールで手動で呼び出しても結果を正しく返すことができます.
errorlogは大丈夫です.accesslogは404の山を記録しても正常です.
Railsのロゴは何も覚えていないので、Rails配布器がトリガーされていないことを示しています.
プロセスを表示し、lighttpdサーバプロセスといくつかのdispatchを起動しました.fcgiプロセス.
最後に気づいたのはconfで$HTTP["host"]を書き間違えました.
配備を試みるだけなので、Railsはdevelopment環境を設定し、プロジェクトも本機にあり、
だからconfプロファイルは次のとおりです.

$HTTP["host"] == "127.0.0.1" {
  server.document-root = "/yourrails/public"
  server.error-handler-404 = "/dispatch.fcgi"
  fastcgi.server = (".fcgi" =>
    ("localhost" => 
      ("minprocs" => 10,
       "maxprocs" => 10,
       "socket" => "/tmp/rails.socket",
       "bin-path" => "/yourrails/public/dispatch.fcgi",
       "bin-environment" => ("RAILS_ENV" => "development")
      )
    )
  )
}

ブラウザで叩いたダイナミックページのURLは次のとおりです.http://localhost/test
問題はこの文にある
$HTTP["host"] == "127.0.0.1"

Lighttpdは「127.0.0.1」と「localhost」が異なるアドレスだと考えていますが...urlには「127.0.0.1」しか使えず、lighttpdは404エラーを直接投げるのではなく、この呼び出しRails配布器であることを正しく認識できます.
解決方法は簡単で、以下の2つの形式のいずれかに変更すればいいです.

#    ,    
$HTTP["host"] == "localhost"
#    ,    
$HTTP["host"] =~ "^localhost"

ちなみにこの2つの方法の違いは、
$HTTP["host"=="localhost"この方式はlocalhostに任意のポートを追加することができ、Railsプロジェクトがサブドメイン名を使用していない場合、この書き方は最も簡単で、最も間違いにくい.
$HTTP["host"=~"^localhost"はドメイン名+ポート番号と正規表現をマッチさせるので、この正規"^localhost$"はマッチしませんhttp://localhost:3000「はい、完全に一致するには「^localhost:3000$」しか使えません.もちろん、実際には正則をこんなに死ぬ人はいません.これは例にすぎません.