首页 > 学院 > 操作系统 > 正文

Nginx反向代理tornado服务

2024-06-28 16:05:16
字体:
来源:转载
供稿:网友

tornado服务的demo

# coding: utf-8import tornado.ioloopimport tornado.webfrom multiprocessing import Poolimport sysimport osclass MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world! PID: %s" % os.getpid())application = tornado.web.Application([ (r"/", MainHandler),])if __name__ == "__main__": def run(port): PRint 'Start Process on port: %s' % port sys.stdout.flush() application.listen(port) tornado.ioloop.IOLoop.instance().start() pool = Pool(3) pool.map(run, [8001, 8002, 8003])

tornado会启动三个进程,分别侦听8001, 8002, 8003三个端口。

安装Nginx

Max上安装Nginx执行brew install nginx即可。 Nginx是一个轻量级的、高性能的WebServer,主要可以干下面两件事:作为http服务器(和apache的效果一样);作为反向代理服务器实现负载均衡。

调整Nginx配置

负载均衡的目的是为了解决单个节点压力过大,造成Web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务的问题。 Nginx负载均衡是通过upstream模块来实现的,内置实现了多种负载策略。Mac上Nginx的配置文件位于/usr/local/etc/nginx,用vim打开进行编辑。

负载均衡配置

upstream tornado.server { server 127.0.0.1:8001; server 127.0.0.1:8002; server 127.0.0.1:8003;}

nginx 的 upstream默认是以轮询的方式实现负载均衡,这种方式中,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。此外还有ip_hash、weight、url_hash、fair等负载均衡策略。 upstream命名和服务器地址根据实际情况修改。我这里是本地起的三个tornado服务,所以server IP地址都配的是127.0.0.1,默认轮询的负载均衡。

反向代理配置

location / { proxy_pass_header Server; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://tornado.server; }

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

完整配置示例

worker_processes 1;events { worker_connections 1024; use kqueue;}http { include mime.types; default_type application/octet-stream; # 负载均衡配置 upstream tornado.server { server 127.0.0.1:8001; server 127.0.0.1:8002; server 127.0.0.1:8003; } sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # 反向代理配置 location / { proxy_pass_header Server; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://tornado.server; } }}

代理地址根据实际情况修改,其他缺省配置项采用默认值就可以。

重新加载nginx.conf

nginx基本操作

1) 启动Nginx:start nginx2) 停止Nginx:nginx -s stop3) 修改配置后重启:nginx -s reload

如果已经启动了Nginx,执行sudo nginx -s reload重新加载配置。

访问结果

直接在浏览器中访问http://127.0.0.1/,就可以访问demo应用了。每次刷新都返回了Hello, world! PID:18854,后面跟的pid是交替出现,说明负载均衡生效了。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表