`
darkbaby123
  • 浏览: 103390 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

一个愚蠢的原因导致的lighttpd的404错误

阅读更多
这几天学习Rails的部署,被Robbin大大的在 Linux 平台上安装和配置 Ruby on Rails 详解 说的热血沸腾,摩拳擦掌准备用lighttpd + FastCGI试试部署。不得不说走前辈的路就是比较平坦。全部配置完后,启动lighttpd服务器,问题来了,访问静态页面都没问题,但动态页面都是显示404页面。

然后查找原因:
dispatch.fcgi确实有执行权限,用控制台手动调用也可以正确返回结果;
errorlog没问题,accesslog记录一堆404,也算正常;
Rails的log就根本什么都没记,说明根本Rails分发器没被触发;
查看进程,确实启动了一个lighttpd服务器进程,和几个dispatch.fcgi进程。
最后发现是lighttpd.conf中把$HTTP["host"]写错了。

因为只是试试部署,Rails设定的是development环境,项目也在本机,
所以lighttpd.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")
      )
    )
  )
}

我在浏览器中敲的动态页面网址是:http://localhost/test

问题就在这句上
$HTTP["host"] == "127.0.0.1"

lighttpd认为"127.0.0.1"和"localhost"是不同的地址……所以,url里只有用"127.0.0.1",lighttpd才能正确识别这是该调用Rails分发器,而不是直接抛404错误的。
解决方法很简单,改成以下两种形式的任一种就行了:
# 第一种,完全匹配
$HTTP["host"] == "localhost"
# 第二种,正则匹配
$HTTP["host"] =~ "^localhost"


顺便说说这两种方式的区别:
$HTTP["host"] == "localhost" 这种方式可以匹配localhost加任意端口,如果Rails项目没有使用子域名的话,这种写法是最简单也最不容易出错的。
$HTTP["host"] =~ "^localhost" 这种方式是把域名+端口号和正则表达式做匹配的,所以这种正则"^localhost$"是不匹配"http://localhost:3000"的,想完全匹配只能用"^localhost\:3000$"。当然实际情况中没人会把正则写的这么死,这只是举例。
0
0
分享到:
评论

相关推荐

    最新lighttpd源码 lighttpd-1.4.22

    Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是...

    Lighttpd源码分析

    Lighttpd源码分析就是一本介绍分析Lighttpd源码的初级读本,其主要目标在于:一方面让已经接触过网络编程的读者可以从Lighttpd这个开源项目中学习到更深入实际的网络编程知识,另一方面也可以让使用Lighttpd作为自己...

    Lighttpd源码分析_mobi

    主要内容包括:lighttpd介绍与分析准备工作、lighttpd网络服务主模型、lighttpd数据结构、伸展树、日志系统、文件状态缓存器、配置信息加载、i/o多路复用技术模型、插件链、网络请求服务响应流程、请求响应数据快速...

    lighttpd-1.4.20.tar

    lighttpd-1.4.20.tar lighttpd-1.4.20.tar

    lighttpd 主工作模式

    lighttpd 流程分析工作模式,帮助理解lighttpd

    varnish+lighttpd配置

    varnish+lighttpd配置

    lighttpd完全学习

    lighttpd完全学习,适合新手文档参考,ppt文件

    lighttpd源码

    Lighttpd 是一个德国人领导的开源Web服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销、cpu占用率低、效能好以及丰富的模块等特点。 ...

    Lighttpd 的windows版本

    Lighttpd 的windows版本 Lighttpd 1.4.35 发布了,该版本包含很多 bug 修复,包括 scan.coverity.com 扫描的问题。但最主要的是一个 SQL 注入(和路径遍历)问题:

    用于ROR应用的lighttpd配置模板

    里面包含了lighttpd启动程序,lighttpd配置模板以及一个控制lighttpd启动和关闭的脚本。

    lighttpd-1.4.26 源码

    lighttpd-1.4.26 源码,官方直接下载,学习的好资源。

    ubuntu lighttpd实现websocket

    如何在ubuntu上实现lighttpd 1、下载mongoose使用mongoose中的example中的websocket_chat,实现websocket 2、websocket_chat源码下载路径 官网:https://cesanta.com 论坛:...

    最新lighttpd-1.4.28源码下载

    最新lighttpd-1.4.28源码下载最新lighttpd-1.4.28源码下载最新lighttpd-1.4.28源码下载最新lighttpd-1.4.28源码下载最新lighttpd-1.4.28源码下载最新lighttpd-1.4.28源码下载

    lighttpd代码阅读资料

    lighttpd代码阅读资料 参数的 web服务器

    lighttpd-1.4.20-cmake

    lighttpd-1.4.20-cmake

    lighttpd fastcgi

    1.修改lighttpd.conf 修改为自己的工作目录 var.server_root = "/home/caoft/lighttpd/lighttpd_websocket_fastcgi/http_server" var.state_dir = "/home/caoft/lighttpd/lighttpd_websocket_fastcgi/http_server"...

    lighttpd-1.4.45_lighttpd服务器_

    lighttpd轻量级web嵌入式服务器,方便嵌入式平台移植,小巧安全

    lighttpd-1.4.20源代码

    lighttpd-1.4.20源代码

    lighttpd-1.4.59.tar.gz

    lighttpd安装包

    lighttpd配置和启动脚本

    包括lighttpd.conf配置文件以及用于控制web server启动和停止的脚本。

Global site tag (gtag.js) - Google Analytics