我們使用Nginx的Lua中間件建立了OAuth2認證和授權層。如果你也有此打算,閱讀下面的文檔,實現自動化并獲得收益。
SeatGeek在過去幾年中取得了發展,我們已經積累了不少針對各種任務的不同管理接口。我們通常為新的展示需求創建新模塊,比如我們自己的博客、圖表等。我們還定期開發內部工具來處理諸如部署、可視化操作及事件處理等事務。在處理這些事務中,我們使用了幾個不同的接口來認證:
Github/Google Oauth 我們SeatGeek內部的用戶系統 基本認證 硬編碼登錄顯然,實際應用中很不規范。多個認證系統使得難以對用于訪問級別和通用許可的各種數據庫進行抽象。
單系統認證
我們也做了一些關于如何設置將解決我們問題的研究。這促使了Odin的出現,它在驗證谷歌應用的用戶方面工作的很好。不幸的是它需要使用Apache,而我們已和Nginx結為連理并把它作為我們的后端應用的前端。
幸運的是,我看了mixlr的博客并引用了他們Lua在Nginx上的應用:
修改響應頭 重寫內部請求 選擇性地基于IP拒絕主機訪問最后一條看起來很有趣。它開啟了軟件包管理的地獄之旅。
構建支持Lua的Nginx
Lua for Nginx沒有被包含在Nginx的核心中,我們經常要為OSX構建Nginx用于開發測試,為Linux構建用于部署。
為OSX定制Nginx
對于OSX系統,我推薦使用Homebrew進行包管理。它初始的Nginx安裝包啟用的模塊不多,這有非常好的理由:
關鍵在于NGINX有著如此之多的選項,如果把它們都加入初始包那一定是瘋了,如果我們只把其中一些加入其中就會迫使我們把所有都加入,這會讓我們瘋掉的。
- Charlie Sharpsteen, @sharpie
所以我們需要自己構建。合理地構建Nginx可以方便我們以后繼續擴展。幸運的是,使用Homebrew進行包管理十分方便快捷。
我們首先需要一個工作空間:
代碼如下:cd ~
mkdir -p src
cd src
之后,我們需要找到初始安裝信息包。你可以通過下面任何一種方式得到它:
找到HOMEBREW_PREFIX目錄,通常在/usr/local下,在其中找到nginx.rb文件 從下列地址取得https://raw.github.com/mxcl/homebrew/master/Library/Formula/nginx.rb 使用如下命令 brew cat nginx > nginx.rb新聞熱點
疑難解答