ngx_http_auth_request_module
location /private/ {
auth_request /auth;
...
}
location = /auth {
proxy_pass ...
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
import SimpleHTTPServer | |
import SocketServer | |
PORT = 8000 | |
class Server(SimpleHTTPServer.SimpleHTTPRequestHandler): | |
def do_GET(self): | |
headers = self.headers.dict | |
print headers.get('x-original-uri') | |
# curl http://127.0.0.1:8000 -u username:password | |
if self.headers.dict.get('authorization') != 'Basic dXNlcm5hbWU6cGFzc3dvcmQ=' or self.headers.dict.get('x-original-uri') == '/not?e=1': | |
self.send_response(401) | |
self.send_header("Content-type", "text/html") | |
self.end_headers() | |
self.wfile.write("") | |
else: | |
self.send_response(200) | |
self.send_header("Content-type", "text/html") | |
self.end_headers() | |
self.wfile.write("") | |
def serve_forever(port): | |
httpd = SocketServer.TCPServer(('', port), Server) | |
httpd.serve_forever() | |
if __name__ == "__main__": | |
serve_forever(8000) |
import SimpleHTTPServer | |
import SocketServer | |
PORT = 8000 | |
class Server(SimpleHTTPServer.SimpleHTTPRequestHandler): | |
def do_GET(self): | |
headers = self.headers.dict | |
# curl http://127.0.0.1:8000 -u username:password | |
if self.headers.dict.get('authorization') != 'Basic dXNlcm5hbWU6cGFzc3dvcmQ=': | |
self.send_response(401) | |
else: | |
self.send_response(200) | |
def serve_forever(port): | |
httpd = SocketServer.TCPServer(('', port), Server) | |
httpd.serve_forever() | |
if __name__ == "__main__": | |
serve_forever(8000) |
master_process off; | |
daemon off; | |
# Number of worker connections. 1024 is a good default | |
events { | |
worker_connections 1024; | |
} | |
http { | |
server { # simple load balancing | |
listen 80; | |
server_name localhost; | |
location / { | |
auth_request /auth; | |
proxy_pass http://notification_service; | |
proxy_read_timeout 300; | |
} | |
location = /auth { | |
proxy_pass http://auth_service; | |
proxy_pass_request_body off; | |
proxy_set_header Content-Length ""; | |
proxy_set_header X-Original-URI $request_uri; | |
proxy_read_timeout 300; | |
} | |
} | |
upstream notification_service { | |
server 127.0.0.1:5000; | |
} | |
upstream auth_service { | |
server 127.0.0.1:8000; | |
} | |
} | |