Nginx
Nginx:帶有“是開發人員”檢查的維護模式
網際網路上描述了很多變體如何使用 nginx 顯示維護頁面。但是我沒有找到檢查使用者是否是開發人員並且不為開發人員顯示維護頁面的解決方案。
我使用 try_files,它在輸入任何 IF 部分後無法正常工作。所以我做了我自己的解決方案,我想分享一下。它適用於任何帶有 try_files、proxy 等的配置。
- 在
http
部分(任何server
部分之外)檢查使用者是否是開發人員:map $http_cookie $isDevHack { default ""; ~DEVELOPER_SECRET=1010 "/non-existed-location"; }
如果使用者在這種情況下有價值,
DEVELOPER_SECRET
那麼他就是開發人員。1010
此映射為配置中的所有伺服器共享。 2. 附加server
帶有 503 錯誤處理程序的部分:error_page 503 @maintenance; location @maintenance { rewrite ^(.*)$ /maintenance-mode.html break; }
maintenane-mode.html
是在維護模式下為非開發人員使用者顯示的頁面。文件路徑是相對於document_root
current 的server
。 3. 在location
維護模式下必須保護的部分中,在任何正常模式規則之前添加:if (-f "$isDevHack/home/site-home/maintenance") { return 503; }
如果目前使用者是開發人員,則檢查的文件名將帶有
/non-existed-location
前綴並且if
永遠不會輸入。