websocket不也是走HTTP的,只要是提供HTTP的端口就可以了。
做法跟提供HTTP服务一样。如果提供websocket的是lighttpd,就直接是同一个端口了;如果提供websocket的是其他服务器,如nodejs,java...的话,就反代到80端口咯。至于区分其他HTTP服务和websocket服务就通过不同的请求路径来实现就可以了。
websocket的请求报头是这样的:
GET /demo HTTP/1.1
Host: example.com
Connection: Upgrade
Sec-WebSocket-Key2: 12998 5 Y3 1 .P00
Upgrade: WebSocket
Sec-WebSocket-Key1: 4@1 46546xW%0l 1 5
Origin:
ws://开头的请求,浏览器还走HTTP请求,只是会在其报头上加上websocket通信相关的headers,websocket服务器就可以作出相应的响应了。websocket客户端是通过发送HTTP请求来打开websocket的。
通过lighttpd反代到websocket专用的path,并转发websocket的headers就行啦!
1. 编译、安装
1.1. 先到lighttpd官网下载对应版本的软件包:
我下载的是 lighttpd-1.4.30.tar.gz
1.2. 将压缩包解压到任意目录(我的是 /root/Desktop/common)得到文件夹 lighttpd-1.4.30
1.3. 在文件夹 lighttpd-1.4.30 中创建shell脚本,命名为:configure-arm.sh
1.4. 在shell脚本 configure-arm.sh 中输入如下代码:
#! /bin/sh
CC=arm-linux-gcc
AR=arm-linux-ar LD=arm-linux-ld RANLIB=arm-linux-ranlib
STRIP=arm-linux-strip ./configure --prefix=/opt/web/lighttpd-1.4.30-arm
--host=arm-linux --build=i686-pc-linux --disable-FEATURE --enable-shared
--disable-static --disable-lfs --disable-ipv6 --without-PACKAGE
--without-valgrind --without-openssl --without-kerberos5 --without-pcre
--without-zlib --without-bzip2 --without-lua
1.5. 打开控制台,cd进入 lighttpd-1.4.30 目录
1.6. 给 configure-arm.sh 文件添加可执行属性,执行命令:
chmod +x configure-arm.sh
1.7. 配置lighttpd,执行命令:
./configure-arm.sh
1.8. 编译lighttpd,执行命令:
make
1.9. 安装lighttpd,执行命令:
make install
Lighttpd使用mod_auth模块可实现对域等进行用户名、密码保护的功能。这与Apache下用.htaccess实现的保护是类似的。
1.在modules.conf中加入
2.在auth.conf中加入
1.密码文件保存方式为plain普通文本文件
2.设置调试级别(0是关闭调试信息,1是认证成功信息,2是更详细的调试信息),信息被记录在 access.log和error.log日志文件中
3.密码文件保存路径
4.指定要进行认证目录,空引号代表所有目录
6.使用基本身份认证
7.用户认证界面提示信息
8.匹配密码文件中的用户
密码文件的添加方式:username:passward。一行一条记录
设置先用户验证后跳转到自定义页面,auth.require的路径必须大于.html的路径
官方文档:
《Lighttpd源码分析》(高群凯)电子书网盘下载免费在线阅读
链接:
提取码:RFDP
书名:Lighttpd源码分析
作者:高群凯
出版社:机械工业出版社
出版年份:2010-3
页数:460
内容简介:
本书主要针对lighttpd源码进行了深度剖析。主要内容包括:lighttpd介绍与分析准备工作、lighttpd网络服务主模型、lighttpd数据结构、伸展树、日志系统、文件状态缓存器、配置信息加载、i/o多路复用技术模型、插件链、网络请求服务响应流程、请求响应数据快速传输方式,以及基本插件模块。本书针对的lighttpd项目版本为稳定版本1.4.20。
本书适合使用lighttpd的人员和爱好者参考。
1.IIS
IIS是英文Internet Information Server的缩写,译成中文就是"Internet信息服务"的意思。它是微软公司主推的服务器,最新的版本是Windows2008里面包含的IIS 7,IIS与Window Server完全集成在一起,因而用户能够利用Windows Server和NTFS(NT File System,NT的文件系统)内置的安全特性,建立强大,灵活而安全的Internet和Intranet站点。
2.ApacheApache
ApacheApache在世界上的排名是第一的,它可以运行在几乎所有广泛使用的计算机平台上。Apache源于NCSAhttpd服务器,经过多次修改,不仅简单、速度快、而且性能稳定,还可以用来做代理服务器。
3.Nginx
Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。
4.Zeus
Zeus是一个运行于Unix下的非常优秀的Web Server,据说性能超过Apache,是效率最高的Web Server之一。
5.Sun
Sun的Java系统Web服务器也就是以前的Sun ONE Web Server。主要出现在那些运行Sun的Solaris操作系统的关键任务级Web服务器上。它最新的版本号是6.1,可以支持x86版本Solaris,Red Hat Linux,HP-UX 11i, IBM AIX,甚至可以支持Windows,但它的大多数用户都选择了SPARC版本的Solaris操作系统。