标签: lighttpd

glibc是否实现了fprintf()线程安全?

fprintf是线程安全的吗? glibc手册似乎说它是,但我的应用程序,使用单个调用fprintf()写入文件似乎是混合来自不同进程的部分写入.

编辑:为了澄清,有问题的程序是一个lighttpd插件,服务器正在运行多个工作线程.

查看该文件,一些写入混合在一起.

编辑2:我看到的问题似乎可能是由于lighttpd的"工作线程"实际上是单独的进程: http://redmine.lighttpd.net/wiki/lighttpd/Docs:MultiProcessor

问题

通过在同一个套接字上运行2个或更多进程,您将获得更好的并发性,但是您必须注意一些缺点:

  • mod_accesslog可能会创建损坏的访问日志,因为同一个文件打开两次并且未同步.
  • mod_status将有n个独立的计数器,每个进程一个.
  • mod_rrdtool将失败,因为它收到两次相同的时间戳.
  • mod_uploadprogress将不会显示正确的状态.

c printf multithreading posix lighttpd

8
推荐指数
2
解决办法
1万
查看次数

让 lighttpd 监听多个端口

我有一个在 AWS EC2 实例上运行的 lighttpd 服务器。它可以在端口 80(或任何其他端口,如果我更改 /etc/lighttpd/lighttpd.conf 中的 server.port)上提供服务,没有任何问题。但是,当我在不同的端口(例如 8080)上提供替代文档根目录时,浏览器永远无法连接到服务器。

我的 lighttpd.conf 文件的相关部分:

server.port = 80

##
## Use IPv6?
##
server.use-ipv6 = "disable"

##
## bind to a specific IP
##
#server.bind = "localhost"

##
## Run as a different username/groupname.
## This requires root permissions during startup. 
##
server.username  = "lighttpd"
server.groupname = "lighttpd"

## 
## enable core files.
##
#server.core-files = "disable"

##
## Document root
##
server.document-root = server_root + "/release"
$SERVER["socket"] == ":8080" { …
Run Code Online (Sandbox Code Playgroud)

lighttpd

8
推荐指数
1
解决办法
2万
查看次数

为什么TUX Web服务器死了?Nginx/Lighttpd/Epoll/Kqueue会替换它吗?

我记得一个非常快速的Linux内核模块,名为"TUX",用于静态文件,以回答IIS优秀的Linux静态文件Web服务性能并解决"C10K问题".现在我一直看到:

  1. Nginx的
  2. Lighttpd的
  3. 的CDN

...用于"快速静态文件服务".如果您的操作系统具有正确的功能,快速提供静态文件并不困难.从那以后,Windows已经发明了IO完成端口,重叠的I/O等.

Tux是否因为安全隐患而死亡?这是Kqueue/Epoll与Sendfile等功能相结合的实验吗?提供100%静态内容的最佳解决方案是什么 - 比如50张左右的图像包装来模拟"翻书"电影.

我理解这是"服务器相关"的问题,但它也是理论上的.如果它纯粹是静态的,那么CDN真的会变得更好吗?

epoll lighttpd cdn nginx linux-kernel

8
推荐指数
1
解决办法
2634
查看次数

对于高流量的ajax密集型网站,您会推荐什么?

对于像reddit这样的网站,有很多上/下投票和每个主题的很多评论,我该怎么办?

Lighttpd/Php或Lighttpd/CherryPy/Genshi/SQLAlchemy?

对于数据库,什么会扩展更好/最快的MySQL(4.1或5?)或PostgreSQL?

php python high-load lighttpd cherrypy

7
推荐指数
2
解决办法
1570
查看次数

使用mysql池对node.js(集群)的性能进行基准测试:Lighttpd + PHP?

编辑(2):现在使用db-mysql和generic-pool模块.错误率显着下降,徘徊在13%,但吞吐量仍然在100 req/sec左右.

编辑(1):在有人建议ORDER BY RAND()会导致MySQL变慢之后,我从查询中删除了该子句.Node.js现在徘徊在100 req/sec左右,但服务器仍然报告"CONNECTION error:Too many connections".

使用PHP的Node.js或Lighttpd?

你可能看到了很多"Hello World"对node.js进行基准测试......但是"hello world"测试,甚至那些每个请求延迟2秒的测试,甚至都没有接近真实世界的生产用量.我还使用node.js执行了"Hello World"测试的那些变体,并且看到吞吐量大约为800 req/sec,错误率为0.01%.但是,我决定进行一些更现实的测试.

也许我的测试不完整,很可能关于node.js或我的测试代码真的是错误的,所以如果你是node.js专家,请帮我写一些更好的测试.我的结果发表在下面.我使用Apache JMeter进行测试.

测试用例和系统规范

测试非常简单.用户数量的mysql查询是随机排序的.检索并显示第一个用户的用户名.mysql数据库连接是通过unix套接字.操作系统是FreeBSD 8+.8GB的RAM.Intel Xeon四核2.x Ghz处理器.在我遇到node.js之前,我稍微调整了Lighttpd配置.

Apache JMeter设置

线程数(用户):5000 我相信这是并发连接数

加速期(以秒为单位):1

循环次数:10 这是每个用户的请求数

Apache JMeter结果

Label                  | # Samples | Average  | Min   | Max      | Std. Dev. | Error % | Throughput | KB/sec | Avg. Bytes

HTTP Requests Lighttpd | 49918     | 2060ms   | 29ms  | 84790ms  | 5524      | 19.47%  | 583.3/sec  | 211.79 | 371.8

HTTP Requests Node.js …

php mysqli lighttpd node.js

7
推荐指数
2
解决办法
8602
查看次数

使用lighttpd Web服务器时,$ _GET和$ _POST变量不存在

我在我的Windows计算机上安装lighttpd的Web服务器和我有一个问题:在PHP文件没有$_GET$_POST变量定义.

例如,我有这个简单的脚本(tmp.php):

<?php

  echo "x: '" . $_GET ['x'] . "'<br />";

?>
Run Code Online (Sandbox Code Playgroud)

当我去地址时: http://localhost/tmp.php?x=123

我收到此错误消息:

Notice: Undefined index: x in /srv/www/htdocs/tmp.php on line 3 x: ''
Run Code Online (Sandbox Code Playgroud)

当我把相同的文件放在公共托管上时,我得到:

x: '123'
Run Code Online (Sandbox Code Playgroud)

还有php命令:

empty ($_GET)
Run Code Online (Sandbox Code Playgroud)

返回true.

所有$ _POST变量都是一样的.

我的php.ini文件中是否有任何错误配置?

命令:

print_r($_SERVER); 
Run Code Online (Sandbox Code Playgroud)

给出以下结果:

Array (
 [SERVER_SOFTWARE] => lighttpd/1.4.20
 [SERVER_NAME] => localhost
 [GATEWAY_INTERFACE] => CGI/1.1
 [SERVER_PROTOCOL] => HTTP/1.1
 [SERVER_PORT] => 80
 [SERVER_ADDR] => 0.0.0.0
 [REQUEST_METHOD] => GET
 [REDIRECT_STATUS] => 200
 [QUERY_STRING] => x=123
 [REQUEST_URI] => /tmp.php?x=123 …
Run Code Online (Sandbox Code Playgroud)

php post get lighttpd

7
推荐指数
1
解决办法
3425
查看次数

使用lighttpd重定向端口80上的websocket流量

我有一个托管在lighttpd上的网站,可在"www"子域访问.我还有一个聊天服务器在端口8124上侦听node.js和socket.io.

我希望所有客户端流量都发生在端口80上,方法是将所有请求重定向到"chat"子域到端口8124.所以我启用了mod_proxy并在lighttpd.conf中添加了:

$HTTP["host"] == "chat.myserver.com" {
    proxy.server = (
            "" => ((
                    "host" => "78.128.79.192",
                    "port" => "8124"
            ))
    )
}
Run Code Online (Sandbox Code Playgroud)

在客户端,当我连接到websocket时,

var socket = io.connect('http://chat.myserver.com');
Run Code Online (Sandbox Code Playgroud)

我从node.js得到了正确的消息:

debug - client authorized
info  - handshake authorized 6067470561567883577
debug - setting request GET /socket.io/1/websocket/6067470561567883577
debug - set heartbeat interval for client 6067470561567883577
debug - client authorized for 
debug - websocket writing 1::
Run Code Online (Sandbox Code Playgroud)

但浏览器出错:

Firefox can't connect to server ws://chat.myserver.com/socket.io/1/websocket/6067470561567883577
Run Code Online (Sandbox Code Playgroud)

当然,如果我直接连接到端口8124,一切正常:

var socket = io.connect('http://www.myserver.com:8124');
Run Code Online (Sandbox Code Playgroud)

但是,正如我所说,我希望所有客户端流量都在端口80上.它是否可能?

lighttpd websocket node.js socket.io

7
推荐指数
1
解决办法
8057
查看次数

Lighttpd:让子路径指向不同的文档根目录

我有一个指向文档根的lighttpd-Setup /var/www.但是,我希望URL other/指向/some/other/dir.我正在使用以下配置:

$HTTP["url"] =~ "^/other($|/)" {
  server.document-root = "/some/other/dir"
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我访问'http:// myhost/other',则lighttpd会尝试访问/some/other/dir/other而不是仅仅访问/some/other/dir.有可能以某种方式剥离/other但保留任何进一步的URL段吗?所以,例如,http://myhost/other/sub/foo.txt应该指出/some/other/dir/sub/foo.txt.

lighttpd subdirectory document-root

7
推荐指数
1
解决办法
4393
查看次数

在Linux上的Lighttpd上运行Rails和PHP

好吧,我想知道在Ubuntu上是否可以在Lighty上运行rails和PHP.我想在一个服务器/域上运行我的PHP项目和Rails项目.

我对Linux的经验很少,所以请原谅我的天真.

如果这是一种方式,请让我知道:)

php linux ubuntu lighttpd ruby-on-rails

6
推荐指数
1
解决办法
1320
查看次数

PHP如何与HTTP服务器交互?(比如lighttpd)

可能重复:
我从未真正理解:什么是CGI?

在lighttpd配置中,我们定义了两个路径(如下所示),其中一个是PHP的二进制文件,另一个是套接字路径.我的问题是,lighttpd在哪一点上获取PHP创建的最终HTML输出?二进制文件是否将输出作为响应提供给lighttpd?或者它是否在另一个地方创建临时文件并且服务器获取它?

fastcgi.server = ( ".php" => ((
                     "bin-path" => "/usr/bin/php-cgi",
                     "socket" => "/tmp/php.socket"
                 )))
Run Code Online (Sandbox Code Playgroud)

php lighttpd

6
推荐指数
1
解决办法
564
查看次数