Nginx

Nginx:帶有“是開發人員”檢查的維護模式

  • April 29, 2015

網際網路上描述了很多變體如何使用 nginx 顯示維護頁面。但是我沒有找到檢查使用者是否是開發人員並且不為開發人員顯示維護頁面的解決方案。

我使用 try_files,它在輸入任何 IF 部分後無法正常工作。所以我做了我自己的解決方案,我想分享一下。它適用於任何帶有 try_files、proxy 等的配置。

  1. 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_rootcurrent 的server。 3. 在location維護模式下必須保護的部分中,在任何正常模式規則之前添加:

if (-f "$isDevHack/home/site-home/maintenance") {
   return 503;
}

如果目前使用者是開發人員,則檢查的文件名將帶有/non-existed-location前綴並且if永遠不會輸入。

引用自:https://serverfault.com/questions/490708