标签: lighttpd

如何通过单个端口处理加密和未加密的 http 连接

请看下图。

替代文字

这应该如何工作?

  • 当远程请求 http://myhost.com:8080/* 时,请求应该转发到监听环回接口 8008 端口的 http 服务器。这是简单的部分。

  • 当远程用户请求 http://myhost.com:8080/specialurl ...

    • 充当应用程序级网关的程序应该能够将连接升级为加密会话(无需更改端口

    • 与远程浏览器建立加密会话后,应将请求转发给监听环回接口8000端口的C程序

我的问题是

  1. 您是否曾经在生产环境中部署过这样的解决方案?如果你有...
  2. 您使用什么产品作为应用程序网关?
  3. 你能提供一个配置示例吗?

硬限制

  • 无法控制防火墙,唯一可以让外部流量进入内部服务器的端口是 8080。端口号无关紧要,问题是在防火墙级别只有一个端口打开以转发传入到内部服务器的流量。
  • 内部服务器必须运行 Linux(目前它运行的是 Debian Lenny)
  • 远程用户只需要当前的 Web 浏览器和 Internet 连接即可访问此服务器。这意味着通过 SSH 进行反向端口转发在这里不是一个选项。
  • 我需要一个已经在生产中经过测试并且可以轻松部署的产品。我不打算开发自己的应用程序网关(如果是这样,我想我会在 Stack Overflow 上问这个问题,而不是在 Server Fault 上问这个问题)。

软限制

  • 我想避免将 Apache 作为应用程序网关(尽管如果这是唯一可能的选择,我愿意这样做)
  • 如果可能,应用网关应该是成熟的开源软件产品。

迄今为止尝试过的应用程序网关产品(未成功)

  • nginx
  • 轻量级

相关 RFC

  • RFC2817 ( ...解释了如何使用 HTTP/1.1 中的升级机制通过现有的 TCP 连接启动传输层安全 (TLS)。这允许不安全和安全的 HTTP 流量共享同一个众所周知的端口...)
  • RFC2818 ( ...描述了如何使用 TLS 来保护 Internet 上的 …

linux http nginx https lighttpd

10
推荐指数
1
解决办法
1938
查看次数

高负载的最佳 sysctl.conf 配置 - 非常繁忙的内容流服务器

什么是高负载、极其繁忙的内容流服务器的最佳 sysctl.conf 配置?服务器从远程服务器(如 amazon、s3 等)获取内容,然后使用 php 将内容动态流式传输给用户,而无需将其保存到硬盘上。php 使用 CURL 来获取文件,然后使用flush() 同时流式传输它,所以没有太多的硬盘工作......只有网络和带宽。

该服务器为四核至强,具有 1Gbit 全双工 NIC、8GB RAM 和 500GBx2 RAID。服务器内存使用率和 CPU 负载非常低。

我们在其上运行 debian lenny 和 lighttpd2(是的,我知道它还没有发布 :-) )和 php 5.3.6 和 php fastcgi 和 spawn-fcgi 绑定在 4 个不同的 unix 套接字上,每个套接字有 20 个孩子。最大 fcgi 请求为 20,在 lighttpd2 配置中使用 mod_balancer 模块来平衡这 4 个 SQF(短队列优先)配置中的套接字之间的 fastcgi 请求。

我们的服务器使用大量带宽,即网络连接一直很忙。就在 100 到 200 个并行连接之后,服务器开始变慢并最终变得无响应,开始出现连接超时错误。当我们有 cpanel 时,我们从来没有出现超时错误,所以它不可能是脚本问题。应该是网络配置问题。


lighttpd2 配置:worker processes = 8,keep alive requests 为32,keep alive idle timeout 为10 秒,最大连接数为8192。

我们当前的 sysctl.conf 内容是:

net.ipv4.tcp_fin_timeout = 1 …
Run Code Online (Sandbox Code Playgroud)

debian file-sharing performance-tuning lighttpd debian-lenny

9
推荐指数
1
解决办法
8045
查看次数

限制上传文件大小并在超过限制时将用户重定向到错误页面

是否可以将用户重定向到文件file too big页面

当 POST 请求大小超过指定限制时?

我知道 max-request-size 选项,但它只提供不能重载的静态页面。

我正在考虑创建一个重写规则,它需要

来自请求正文的内容大小作为输入并重定向到错误页面

更新

现在我们使用 nginx 作为前端。有什么新建议吗?

nginx lighttpd .htaccess httpd.conf upload

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

HAproxy 503 Service Unavailable 没有可用的服务器来处理这个请求

我是这种负载平衡方案的新手,我的任务是弄清楚如何使这种负载平衡起作用。

我的环境:

Centos 6.4 64 Bit
Webserver: Lighttpd
All running in ESXI
virtual IP: 192.168.1.6
LB1: 192.168.1.4
LB2: 192.168.1.5
Webserver 1: 192.168.1.12
Webserver 2: 192.168.1.13
Gateway: 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

尝试在使用 HAproxy 和 keepalived 生产之前在实验室中运行测试。这是我的 keepalived 设置:

!keepalived的配置文件

global_defs {
   notification_email {
     myemail@gmail.com
   }
   notification_email_from keepalived@domain.local
   smtp_server 192.168.1.4
   smtp_connect_timeout 30
   router_id 192.168.1.1
}

vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 1                     # check every second
weight 2                       # add 2 points of prio if OK
}

vrrp_instance VI_1 {
    state MASTER
    interface …
Run Code Online (Sandbox Code Playgroud)

load-balancing lighttpd haproxy keepalived centos6.4

9
推荐指数
2
解决办法
10万
查看次数

php-cgi 进程的内存使用量稳步增长

我正在尝试在 VPS 上设置 Web 服务器。我的问题是 php-cgi 进程的内存使用量随着时间的推移而增加,即使该网站根本没有收到任何流量。(它暂时在防火墙后面)

VPS 有 360MB 内存。我正在使用 Debian Lenny 32bit 及其 lighttpd 和 php5-cgi 软件包。除了一些配置更改(如下所列),我正在使用 Debian 的库存设置。

该网站基于 Drupal。使用 Drupal 的 devel 模块,我可以看出 PHP 脚本的内存使用量平均不到 20KB,并且永远不会超过 8MB。

以下是输出的相关部分ps aux

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
www-data 29871  0.0  1.7  54552  6368 ?        Ss   Aug12   0:00 /usr/bin/php-cgi
www-data 29873  0.0  7.4  65808 27468 ?        S    Aug12   0:00 /usr/bin/php-cgi
www-data 29874  0.0  3.7  55808 13736 ?        S    Aug12   0:00 /usr/bin/php-cgi
www-data …
Run Code Online (Sandbox Code Playgroud)

linux php memory web-server lighttpd

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

Lighttpd 为 UTF-8 内容发送错误的标头

Ubuntu/Lighttpd 没有为我的 UTF-8 编码文件提供正确的Content-Type标头。它是发送Content-Type: text/html而不是Content-Type: text/html; charset=UTF-8. 如何配置 Lighttpd 以发送正确的标头?

我在默认设置中没有看到任何有用的设置,lighttpd.conf并且无法在文档中找到信息。

lighttpd utf-8

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

logrotate 用日期重命名文件

现在,logrotate 将旧日志文件重命名为 access.log.1.gz、access.log.2.gz 等。我希望将它们命名为 access.log.20090714.gz、access.log.20090715.gz,等等 - 每天一个。

我找不到为旧日志文件指定文件名模式的任何选项。你知道怎么做吗?

顺便说一句,这是用于轮换 lighttpd 日志文件,如果这很重要的话。

lighttpd logrotate

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

在端口 443 上运行多个服务,通过 HTTPS 隧道 SSH

情况: 我想通过 HTTPS 建立 SSH 会话隧道。我有一个非常严格的防火墙/代理,它只允许 HTTP、FTP 和 HTTPS 流量。

什么工作: 通过代理建立一个隧道到一个远程 linux 机器,在端口 443 上有一个 sshd 监听

问题: 我必须在端口 443 上运行一个 Web 服务器(轻量级)。代理禁止到其他端口的 HTTPS 流量。

到目前为止的想法: 设置虚拟主机并将所有传入请求代理到本地主机:(例如22)

$HTTP["host"] == "tunnel.mylinux.box" {                                         
    proxy.server = (                                                            
        "" => (("host" => "127.0.0.1", "port" => 22))                           
    )                                                                           
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这行不通。我做错了什么,还是有原因,这行不通?

firewall https ssh-tunnel lighttpd

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

保活或不保活

我的公司正在推出一个新网站,在很短的窗口中可能会有大量访问者(估计在 2 分钟的窗口内访问者约为 14k)。

所以,我正在审查我们的配置,我现在最大的问题是我们使用 keep-alive 的单节点 HTTP 前端。前端在 CentOS 5.4 上运行 lighttpd 1.4。

一些假设:

  • 浏览器通常会打开 6 个并行 TCP 连接以保持活动状态
  • 浏览器将保持连接打开直到超时,即使选项卡已关闭(在 FF 中观察到,可能并非在每个浏览器上都如此)
  • 在服务器端,每个连接将消耗内核中约 150K 的内存(我使用 conntrack 并想保留它,这个估计是否正确?)
  • 我们所有的服务器都托管在东海岸。来自拉斯维加斯服务器的 RTT 大约为 80 毫秒。
  • 带有 keep-alive 的主页使用了大约 25 个 TCP 连接和 1500 个数据包。如果没有保持连接,这个数字会上升到大约 210 个 TCP 连接和超过 3200 个数据包。

因此,6*14000 = 84,000 个 TCP 连接。84,000 * 150KB ~= 12GB 内存。问题是: 1. 我在前端没有那么多可用的内存。2. lighttpd 1.4 对要管理的连接数量不是很满意。它伤害了命中/很多。

但另一方面,如果我停用 keepalive,我会担心 80 毫秒的 RTT。

我将通过 CDN 和带有辅助 lighttpd 的辅助 www 记录来缓解其中的一些问题。但辩论涉及保持活动功能。我想关闭它,但我担心对页面打开时间的影响会很大(RTT 高,数据包数量翻倍)。

内容检索完成后,我们有很多 ajax 请求用于浏览通常适合单个 …

performance lighttpd keepalive

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

如何提供带有问号的 wget --mirror'ed 文件目录

我正在尝试创建一个 php 应用程序的静态镜像(特别是旧的 php Gallery 安装)。该应用程序生成 URL,例如:

view_album.php?set_albumName=MyAlbum
Run Code Online (Sandbox Code Playgroud)

wget将这些直接下载到名称相同的文件中,并带有问号。为了不破坏入站链接,我想保留这些名称。但我如何为他们服务?我遇到了两个问题:

  1. 网络服务器(正确地)尝试查找“view_album.php”,并将查询参数传递给它,而不是查找带有问号的文件。如何告诉网络服务器查找其中带有问号的文件?重命名文件是不可取的,因为它会破坏入站链接。我不能告诉入站链接器对他们的 URL 进行 %-encode。

  2. 这些文件不以 HTML 结尾,因此大多数网络服务器不会发送 html 内容类型标头。我应该寻找哪些配置参数来告诉它为目录中的所有文件强制使用“text/html”内容类型或匹配特定模式?

我最终使用的是 lighttpd,但是如果您知道什么样的配置可以使用 apache/nginx 获得所需的结果,我也很想听听。

lighttpd wget

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