利用nginx向現有網站添加登陸驗證功能(不添加修改現有網站代碼)

在不改變現有網站代碼的前提下加入驗證功能:
1.假設現有網站後端nodejs,端口3000,nginx配置以下
 server {
        listen      80;
        server_name localhost;
        location /{
            proxy_pass  http://localhost:3000;
        }
 }
2.如今要爲該網站添加驗證功能,在不改變原有代碼基礎上須要作以下工做:
a.首先須要爲nginx加入http_auth_request模塊(附件),若nginx版本1.5.4+則無需添加該模塊
b.新建node.js express網站,端口3001,並添加登陸驗證功能:
c.修改nginx配置文件以下:
    server { 
            listen 80;
            server_name localhost;
            location /{ 
                auth_request /auth; 
                proxy_pass http://localhost:3000; 
            } 
            location /auth{ 
                proxy_pass http://localhost:3001;
                proxy_pass_request_body off; 
                proxy_set_header Content-Length ""; 
                proxy_set_header X-Original-URI $request_uri; 
            } 
            location /login{ 
                proxy_pass http://localhost:3001;
            } 
            error_page 403 /login;
        }

原理:訪問80端口,先由auth_request將request送至/auth驗證請求,若是是驗證了的則返回200,nginx繼續將請求發送至3000端口,若是/auth返回403,則nginx不會將請求發送至3000端口,最後定義一下403的位置便可。node

相關文章
相關標籤/搜索