我们有一个用 PHP 构建的 RestFUL API。如果我们提出请求:
curl -u api-key:api-passphrase https://api.domain.com/v1/product -X POST
Run Code Online (Sandbox Code Playgroud)
我们回来:
411 - Length Required
Run Code Online (Sandbox Code Playgroud)
虽然如果我们简单地添加-d ""到请求中,它可以工作并且没有 411 错误。有没有办法不需要在 curl 命令中添加 -d ?
我们正在使用 lighttpd 网络服务器,并且相信它的 lighttpd 不是 php 返回 411 错误。
我正在调查Slowloris的漏洞,我想我了解这种攻击的工作原理和原因。
我不明白的是为什么 Lighttpd 和 NginX 不受影响(根据上面链接的同一篇文章)。它们有什么不同?
如何让 EC2 微实例从 lighthttpd 提供 CGI 脚本?例如Python CGI?
嗯,这花了半天时间,但我已经使用 lighttpd 服务器在免费的 Amazon AWS EC2 微实例上运行了 Python cgi。我认为将所有步骤放在一个地方会帮助我的新手。通过以下简单步骤,您只需 15 分钟即可完成设置!
对于阅读本文的更有经验的用户,我的问题是:我所做的是否存在任何安全漏洞?(请参阅文件和目录权限。)
[显然,您需要注册 Amazon EC2 并将您的密钥对保存到 *.pem 文件中。我不会讨论这个,因为亚马逊会告诉你如何去做。]
登录您的 AWS 账户并启动您的 EC2 实例。网络上有关于这样做的教程。请注意,Amazon 提供给您的默认实例大小为“小”。这不是“微型”,因此它会花费您金钱。一定要手动选择“微”。(微型实例仅在第一年免费......)
查找正在运行的实例的公共 DNS 代码。为此,单击仪表板顶部窗格中的实例,您最终会看到底部窗格中填充的“公共 DNS”字段。(您可能需要稍微调整一下。)公共 DNS 看起来像:
ec2-174-129-110-23.compute-1.amazonaws.com
启动您的 Unix 控制台程序。(在 Max OS X 上,它被称为终端,位于 Applications -> Utilities 文件夹中。)
cd 到桌面系统上的目录,该目录包含包含 AWS 密钥对的 *.pem 文件。
使用如下命令通过 ssh 连接到您的 EC2 实例:
ssh -i <<your *.pem filename>> ec2-user@<< Public DNS address >>
所以,对我来说,这是:
ssh …
我想在生产中使用 Lighttpd 来为 Django 应用程序提供服务,但我发现最近 Nginx 越来越流行。这是为什么?我知道过去 Lighttpd 有内存泄漏,但现在不是修复了吗?他们确实有活跃的开发人员来解决这类问题,不是吗?
我有什么理由应该使用 Nginx 而不是 Lighty 吗?我知道 nginx 是一个很棒的服务器,但它真的那么好并且比 lighty 更好吗?
我想知道 nginx 是否能够在同一个端口上处理 http 和 https 请求。[*]
这就是我想要做的。我正在运行处理 http 请求的 Web 服务器 (lighttpd),以及通过 https 为文档树的特定部分提供服务的 C 程序。这两个进程运行在同一台服务器上。
在防火墙级别,我只能有一个端口将流量转发到此服务器。所以我想做的是在这台服务器上设置 nginx 以便它侦听单个端口上的请求,然后:
A) 重定向所有http://myhost.com/*请求,以便它们转到 localhost:8080(lighttpd 正在侦听的位置)
B) 如果用户请求以 https://myhost.com/app 开头的 URL,它会将该请求发送到 localhost:8008(C 程序)。请注意,在这种情况下,远程浏览器和 nginx 之间的流量必须加密。
你认为这可能吗?如果是,怎么做?
我知道如何使用两个不同的端口来做到这一点。我面临的挑战是仅使用一个端口来完成此操作(不幸的是,我无法控制此特定环境中的防火墙配置,因此这是我无法避免的限制)。使用诸如通过 ssh 进行反向端口转发来绕过防火墙的技术也不起作用,因为这应该适用于只有 Web 浏览器和 Internet 链接的远程用户。
如果这超出了 nginx 的能力,您知道还有其他产品可以满足此要求吗?(到目前为止,我在使用 lighttpd 和 pound 进行设置时没有成功)。我也更喜欢避免使用 Apache(尽管如果这是唯一可能的选择,我愿意使用它)。
提前致谢,亚历克斯
[*] 为了清楚起见,我说的是通过同一端口处理加密和未加密的 HTTP 连接。加密是通过 SSL 还是 TLS 完成都没有关系。
根据您的经验,Lighttpd 和 Nginx 哪个更适合 Django?我都用过,几乎看不出有什么区别,它们工作得很好......是否有任何用例,其中一个比另一个表现得更好?回答时请同时考虑配置的简单性和效率。
我通常的设置是./manage.py runfcgi daemonize=false port=8098 host=127.0.0.1通过 daemontools 或init.d脚本和 lighty/nginx 作为反向代理启动一个单独的 Django FCGI 进程(如 中)。
哦,如果您觉得其他一些 http 服务器比 Lighty 和 Nginx 更适合 Django,请不要犹豫,分享您的想法。
我试图找出我可以在我的 VPS 上安装的最好的 Apache MPM。我看到了一些基准测试,MPM Worker 似乎比 Prefork 性能更好,但出于某种原因,每个人似乎都推荐 Prefork 而不是 Worker 用于 PHP 设置。
这仅仅是因为某些 PHP 函数不是线程安全的吗?只是setlocale()想到,但我将在每个实例上使用相同的语言环境,所以我认为这不会成为问题。我的 VPS 内存不足,我觉得工作 MPM 更适合我的需求,但是我不确定。
有人可以帮我下定决心吗?谢谢!
PS:我还研究了 nginx 和 lighttpd。nginx 看起来很棒,但我试图避免从源代码编译,我仍然不太明白 php-fpm 的用途。关于 lighttpd - 用它设置 PHP/FCGI 非常容易,但我听说它有内存泄漏。这仍然是真的吗?
我有一个启用了 Lighttpd 和 fastcgi 的 Centos 5 系统。它记录访问但不记录错误。我有内部服务器错误 500 并且日志中没有信息,当我尝试打开不存在的文件时 - 错误日志中也没有信息。如何正确启用它?
下面是我启用的模块列表:
server.modules = (
"mod_rewrite",
"mod_redirect",
"mod_alias",
# "mod_access",
# "mod_cml",
# "mod_trigger_b4_dl",
# "mod_auth",
"mod_status",
"mod_setenv",
"mod_fastcgi",
# "mod_webdav",
# "mod_proxy_core",
# "mod_proxy_backend_fastcgi",
# "mod_proxy_backend_scgi",
# "mod_proxy_backend_ajp13",
# "mod_simple_vhost",
# "mod_evhost",
# "mod_userdir",
# "mod_cgi",
# "mod_compress",
# "mod_ssi",
# "mod_usertrack",
# "mod_expire",
# "mod_secdownload",
# "mod_rrdtool",
"mod_accesslog" )
Run Code Online (Sandbox Code Playgroud)
下面是调试的设置:
## enable debugging
#debug.log-request-header = "enable"
#debug.log-response-header = "enable"
#debug.log-request-handling = "enable"
debug.log-file-not-found = "enable"
#debug.log-condition-handling = …Run Code Online (Sandbox Code Playgroud) 我正在优化我们的系统以实现更快的静态内容交付,并且想知道是否有人对最快的 Web 服务器有任何适当的经验来实现这一目的。
从我考虑过的三个主要候选者 Nginx、Cherokee 和 Lighttpd 来看,每个似乎都有自己的问题——但我在网上阅读的报告有些偏颇,倾向于用户当前使用的服务器。
关于在哪里可以看到针对此特定目的的适当基准的任何想法,或者至少是无偏见的利弊列表?我应该有所不同的任何个人经历和陷阱?
谢谢
编辑:Serverfault.com 给出了 nginx 的答案。我仍然想听听来自宇宙这一端的一些开发人员的想法。
请看下图。

这应该如何工作?
当远程请求 http://myhost.com:8080/* 时,请求应该转发到监听环回接口 8008 端口的 http 服务器。这是简单的部分。
当远程用户请求 http://myhost.com:8080/specialurl ...
充当应用程序级网关的程序应该能够将连接升级为加密会话(无需更改端口)
与远程浏览器建立加密会话后,应将请求转发给监听环回接口8000端口的C程序
我的问题是:
硬限制:
软限制:
迄今为止尝试过的应用程序网关产品(未成功)
相关 RFC
lighttpd ×10
nginx ×6
apache-2.2 ×2
django ×2
http ×2
https ×2
php ×2
amazon-ec2 ×1
cgi ×1
cherokee ×1
curl ×1
fastcgi ×1
linux ×1
log-files ×1
malware ×1
mod-fastcgi ×1
php-fpm ×1
python ×1
web-server ×1