这些是我完全正常工作的龙卷风和烧瓶文件:
龙卷风:
from flaskk import app
from tornado.wsgi import WSGIContainer
from tornado.ioloop import IOLoop
from tornado.web import FallbackHandler, RequestHandler, Application
class MainHandler(RequestHandler):
def get(self):
self.write("This message comes from Tornado ^_^")
tr = WSGIContainer(app)
application = Application([
(r"/tornado", MainHandler),
(r".*", FallbackHandler, dict(fallback=tr)),
])
if __name__ == '__main__':
application.listen(5052)
IOLoop.instance().start()
烧瓶中:
from flask import Flask, jsonify
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class Report(Resource):
def get(self):
return 'hello from flask'
api.add_resource(Report, '/report')
现在我试图在龙卷风面前设置nginx 我的nginx配置文件是:
worker_processes 3;
error_log logs/error.;
events {
worker_connections 1024;
}
http {
# Enumerate all the Tornado servers here
upstream frontends {
server 127.0.0.1:5052;
}
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
sendfile on;
server {
listen 5050;
server_name localhost;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://localhost:5050;
}
}
}
我做的时候
本地主机:5050 /
然后我得到了nginx欢迎页面。但是当我做的时候
本地主机:5050 /报告
然后我得到了404.龙卷风在5052端口上运行 为什么nginx不会调用龙卷风从而从烧瓶中得到结果?
我在这里错过了什么吗?
答案 0 :(得分:2)
首先,您不想代理localhost:5050
,因为这是Nginx本身
您想要代理upstream frontends
。
proxy_pass http://frontends;
关于你的Flask问题,我已经让它工作得很好。
@app.route('/report')
def report():
return 'hello from flask'
$ curl localhost:5052/report
hello from flask
当我在Flask Restful中添加时,仍然有效。
你说你看到nginx的索引页面,所以它正在运行,你只需要正确地将其他端口挂钩在一起。
proxy_pass
修复似乎对我有用。
$ curl localhost:5050/report
"hello from flask"
$ curl localhost:5050/tornado
This message comes from Tornado ^_^