如何使用nginx auth_request模块+ python授权访问目录

时间:2015-06-29 12:36:40

标签: python nginx authorization auth-request

我想使用/private Nginx模块授权访问目录auth_request

Nginx documentation 中,似乎我应该像下面那样:

server {
        listen       80;
        server_name  localhost;

    location /private/{
            auth_request /auth;
    }

    location /auth {
        proxy_pass http://localhost:8080/;
        proxy_pass_request_body off;
        proxy_set_header Content-Length "";
        proxy_set_header X-Original-URI $request_uri;
    }
}

在我的情况下,http://localhost:8080/是一个python服务器,它应该根据数据库对用户进行身份验证。这是python代码:

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def post(self):
        print(str(self.request))
        raise tornado.web.HTTPError(403) # just test
    def get(self):
        print(str(self.request))
        raise tornado.web.HTTPError(401) # test also


application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8080)
    tornado.ioloop.IOLoop.current().start()

现在,当我在浏览器中访问http://localhost/private/时,它会打印出来:

等待我的代码返回

401 Authorization Required

问题:如何请求/接收用户名和密码数据,以便我可以提出401异常或让用户通过?

0 个答案:

没有答案