转载

nginx反向代理skynet

nginx作为一个web服务器和反向代理服务器,能够使web服务器和逻辑单独分离,也可以作为负载均衡服务器。基于这些优点,可以使用nginx反向代理skynet,即skynet监听本地的一个socket端口,收到请求后处理逻辑,然后返回结果。nginx和skynet可以同一台机器上,也可以在不同的机器上。

新建一个skynet服务并启动起来,当收到请求后简单返回一条信息

local skynet = require "skynet" local socket = require "socket" local httpd = require "http.httpd" local sockethelper = require "http.sockethelper"   skynet.start(function()     local id = socket.listen("0.0.0.0", 8008)     skynet.error("Listen  port 8008")     socket.start(id , function(id, addr)         socket.start(id)         httpd.write_response(sockethelper.writefunc(id), 200,"this is a http response");         socket.close(id);     end) end) 

启动起来后log如下,监听8008端口

[:01000001] LAUNCHlogger [:01000002] LAUNCHsnluabootstrap [:01000003] LAUNCHsnlualauncher [:01000004] LAUNCHsnluacmaster [:01000004] masterlistensocket 0.0.0.0:2013 [:01000005] LAUNCHsnluacslave [:01000005] slaveconnectto master 127.0.0.1:2013 [:01000006] LAUNCHharbor 1 16777221 [:01000004] connectfrom 127.0.0.1:49321 4 [:01000004] Harbor 1 (fd=4) report 127.0.0.1:2526 [:01000005] Waitingfor 0 harbors [:01000005] Shakehandready [:01000007] LAUNCHsnluadatacenterd [:01000008] LAUNCHsnluaservice_mgr [:01000009] LAUNCHsnluamain Serverstart [:0100000a] LAUNCHsnluatestnginx [:0100000a] Listen  port 8008 [:01000009] KILLself [:01000002] KILLself 

nginx配置

server {         listen       8020;         server_name  localhost;           location ~ /server$ {         proxy_passhttp://192.168.18.201:8008;         proxy_set_header X-Real-IP $remote_addr;         }   } 

将所有以server为uri的请求全部转向skynet的8008端口上。

重新加载nginx,用浏览器打开http://localhost:8020/server会收到一条信息显示在浏览器上。

this is a httpresponse 

skynet已经自带了一个simpleweb例子,可以直接使用,还有一些解析header的代码,自己可以修改体验下skynet作为web服务器使用。

原文  http://www.dohooe.com/2016/04/05/363.html
正文到此结束
Loading...