15
回答
求解:lighttpd的其他web服务可否与websocket服务共用80端口?
注册华为云得mate10,2.9折抢先购!>>>   
问题:如果lighttpd上的80端口已经被web服务占用,现在要在lighttpd上分发websocket服务,仍然使用80端口,能否分发成功呢?会不会出现端口已经被占用的问题?换句话说,lighttpd的其他web服务可否与websocket服务共用80端口?望各位指点!谢谢!
举报
mrZhan_223
发帖于4年前 15回/2K+阅
共有15个答案 最后回答: 3年前

引用来自“梁欢”的评论

我知道可以,但是不知道怎么弄。同求答案。
你都没有弄过,你是怎么知道lighttpd的websocket服务与其他web服务可以共享80端口的?

websocket不也是走HTTP的,只要是提供HTTP的端口就可以了。

做法跟提供HTTP服务一样。如果提供websocket的是lighttpd,就直接是同一个端口了;如果提供websocket的是其他服务器,如nodejs,java...的话,就反代到80端口咯。至于区分其他HTTP服务和websocket服务就通过不同的请求路径来实现就可以了。

引用来自“mingshun”的评论

websocket不也是走HTTP的,只要是提供HTTP的端口就可以了。

做法跟提供HTTP服务一样。如果提供websocket的是lighttpd,就直接是同一个端口了;如果提供websocket的是其他服务器,如nodejs,java...的话,就反代到80端口咯。至于区分其他HTTP服务和websocket服务就通过不同的请求路径来实现就可以了。

你说的没错,但是有个问题,websocket服务与其他的web服务还是有些不同,websocket服务的url是以ws://开头,而其他web服务是以http://开头,因此还是有区别的,算是不同的服务,在lighttpd上让不同的服务共享80端口如何能实现?这样难道不会报端口占用的问题?

很困惑,请指点!

现在有这样一个场景:服务器上有一个lighttpd服务器,主要用于处理http://这样的web请求,使用的是80端口,现在要在服务器上运行websocket程序,而这个websocket程序使用的是第三方websocket框架实现的,现在也要使用80端口,那么现在就出现了在同一台机器有2个不同的服务都要使用80端口的情况,这样就会出现端口被占用的错误,那么如何能够让这2种服务共享80端口?

引用来自“mingshun”的评论

websocket不也是走HTTP的,只要是提供HTTP的端口就可以了。

做法跟提供HTTP服务一样。如果提供websocket的是lighttpd,就直接是同一个端口了;如果提供websocket的是其他服务器,如nodejs,java...的话,就反代到80端口咯。至于区分其他HTTP服务和websocket服务就通过不同的请求路径来实现就可以了。

引用来自“mrliu_223”的评论

你说的没错,但是有个问题,websocket服务与其他的web服务还是有些不同,websocket服务的url是以ws://开头,而其他web服务是以http://开头,因此还是有区别的,算是不同的服务,在lighttpd上让不同的服务共享80端口如何能实现?这样难道不会报端口占用的问题?

很困惑,请指点!

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: http://example.com

ws://开头的请求,浏览器还走HTTP请求,只是会在其报头上加上websocket通信相关的headers,websocket服务器就可以作出相应的响应了。websocket客户端是通过发送HTTP请求来打开websocket的。

通过lighttpd反代到websocket专用的path,并转发websocket的headers就行啦!

引用来自“mrliu_223”的评论

现在有这样一个场景:服务器上有一个lighttpd服务器,主要用于处理http://这样的web请求,使用的是80端口,现在要在服务器上运行websocket程序,而这个websocket程序使用的是第三方websocket框架实现的,现在也要使用80端口,那么现在就出现了在同一台机器有2个不同的服务都要使用80端口的情况,这样就会出现端口被占用的错误,那么如何能够让这2种服务共享80端口?
lighttpd监听80端口,websocket服务器监听一个非80端口。假设要通过http://example.com/ws来作为websocket的请求path,则通过lighttpd将所有来自该path的请求反代到websocket服务器的端口上不就行了。都是http协议,有什么想不通的?!

引用来自“mrliu_223”的评论

现在有这样一个场景:服务器上有一个lighttpd服务器,主要用于处理http://这样的web请求,使用的是80端口,现在要在服务器上运行websocket程序,而这个websocket程序使用的是第三方websocket框架实现的,现在也要使用80端口,那么现在就出现了在同一台机器有2个不同的服务都要使用80端口的情况,这样就会出现端口被占用的错误,那么如何能够让这2种服务共享80端口?

引用来自“mingshun”的评论

lighttpd监听80端口,websocket服务器监听一个非80端口。假设要通过http://example.com/ws来作为websocket的请求path,则通过lighttpd将所有来自该path的请求反代到websocket服务器的端口上不就行了。都是http协议,有什么想不通的?!
谢谢你的回复!现在还有一个疑问,如你所说的让websocket服务去监听非80端口,实际上websocket与其他WEB服务并没有共享80端口是吗?这样的话,在实际环境下可能会存在问题,实际环境下非80端口很有可能被封,不能使用,如果websocket服务不是监听的80端口,那么就有可能用不了这个服务了。因此必须要是80端口才行!请你指点!谢谢!
另外,lighttpd的mod_proxy模块目前好像还不支持代理websocket请求,只能代理普通的http请求
--- 共有 1 条评论 ---
mingshun既然知道不支持websocket还问这个问题,不是无聊吗? 4年前 回复

引用来自“mrliu_223”的评论

引用来自“mrliu_223”的评论

现在有这样一个场景:服务器上有一个lighttpd服务器,主要用于处理http://这样的web请求,使用的是80端口,现在要在服务器上运行websocket程序,而这个websocket程序使用的是第三方websocket框架实现的,现在也要使用80端口,那么现在就出现了在同一台机器有2个不同的服务都要使用80端口的情况,这样就会出现端口被占用的错误,那么如何能够让这2种服务共享80端口?

引用来自“mingshun”的评论

lighttpd监听80端口,websocket服务器监听一个非80端口。假设要通过http://example.com/ws来作为websocket的请求path,则通过lighttpd将所有来自该path的请求反代到websocket服务器的端口上不就行了。都是http协议,有什么想不通的?!
谢谢你的回复!现在还有一个疑问,如你所说的让websocket服务去监听非80端口,实际上websocket与其他WEB服务并没有共享80端口是吗?这样的话,在实际环境下可能会存在问题,实际环境下非80端口很有可能被封,不能使用,如果websocket服务不是监听的80端口,那么就有可能用不了这个服务了。因此必须要是80端口才行!请你指点!谢谢!

外界直接访问lighttpd,然后lighttpd本地访问websocket服务端口,又不是外部直接访问websocket的端口,即使封了又有什么关系呢?况且也不应该让外界绕过lighttpd直接访问后台服务器的端口。

一个端口可以提供不同服务的,只要在端口最前端判断一下是什么服务,就反代到后台相应的服务提供者就行了,即使是不同的协议也可以共享同一个端口。

顶部