hiawatha服务器反向代理配置的一些坑
介绍一下Hiawatha Web服务器
Hiawatha于2002年1月开始作为一个小型Web服务器,适用于具有旧硬件的服务器。Leisink,计算机科学专业的学生的时候,最初创建的服务器,以支持学生宿舍互联网服务器在代尔夫特的荷兰南部的荷兰。由于服务器的设计以提高安全性为重点,Leisink声称“Hiawatha中有许多安全功能,你在任何其他网络服务器中都找不到。” [4]
作者说:“我很长一段时间都知道其他网络服务器中存在的漏洞。[一件事]困扰我:CGI的运行时间。[其他网络服务器下的] CGI流程可以永久运行。 CGI脚本可以DoS一个网络服务器。系统管理员需要杀死脚本。那么客户端[或黑客]继续猜测HTTP身份验证的密码呢?这些问题启发我创建Hiawatha,设置最大请求发送时间,最大CGI运行时间,客户端禁止等。在我看来,每个守护进程应具有的功能。“ [ 引证需要 ]
2009年1月版的Linux Magazine包含一篇关于Hiawatha Web服务器的文章,将其描述为“具有良好性能和一些创新安全功能的轻型Web服务器”。[5] Hiawatha经常被认为是Apache的轻量级替代品,因为它优先考虑简易安装和减少存储,而不是包括许多其他附加功能。
编写时间: C语言 开发者: Hugo Leisink 操作系统: FreeBSD, Haiku os, HP-UX, IBM AIX, Linux, OpenBSD, OS X, QNX, Solaris, Unix-like and Windows 平台: 可移植操作系统接口, 跨平台
相对应于nginx,Hiawatha反向代理代码更加简单易读。
在测试Hiawatha反向代理时遇到了一个坑。。。见下面的代码
1
2
3
4
5
6
7
8
VirtualHost {
Hostname = www.host.com, host.com
ReverseProxy = http://127.0.0.1:9090/
TLScertFile = /etc/hiawatha/host.pem
WebsiteRoot = /var/www/web
RequireTLS = yes
#UseGZfile = yes
}
专业的就应该知道是那里错了,
下面才是使用Hiawatha web服务器反向代理的正确方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Binding {
Port = 443
TLScertFile = host.pem
Interface = 192.168.0.1 #此处填写服务器外面ip监听,即公网IP地址
# MaxRequestSize = 2048
# TimeForRequest = 30
}
VirtualHost {
Hostname = www.host.com, host.com
ReverseProxy .* http://127.0.0.1:9090/
TLScertFile = /etc/hiawatha/host.pem
WebsiteRoot = /var/www/web
RequireTLS = yes #http重定向到https
#UseGZfile = yes
}
就这么简单,注意.pem格式是ssl证书,格式如下
证书key+证书密匙+域名根证书
使用Let’s Encrypt生产的都已经包括了上面所有的证书。
可以使用以下命令合成.pem证书
cat test.key test.ca testroot.ca > host.pem
注意 > 字符,如果使用 >> 则是追加。会造成证书内容重复。