2016-04-28 66 views
1

我在不同的文件中有nginx的兩個服務器部分。Nginx服務器名稱優先級

第一招:

server { 
    server_name _; 
    ... 
} 

第二個:

server { 
    server_name ~someRegex; 
    ... 
} 

我有一些限制 - 我不能改變的第一個服務器部分(即我不能編輯第一個文件)

文件說,有關服務器名稱的優先級以下:

  1. 確切名稱
  2. 以星號開頭的最長通配符名稱,例如, 「*。example.org」
  3. 以星號結尾的最長通配符名稱,例如「郵件。*」
  4. 第一匹配(在配置文件中出現的順序)的正則表達式

據我所知server_name _被用作捕獲所有服務器。

所以當我有匹配的主機請求someRegex請求由第一個服務器部分處理。有沒有辦法通過第二個服務器部分來處理這些請求?

回答

2

不完全。

_只是呈現server_name無效。見this document

server阻止默認值的原因是先定義給定端口或使用listen ... default_server修飾符定義。見this document

因此,如果您的正則表達式有效,並且第二個服務器塊確實已由nginx安裝,您的配置將按預期工作。在重新加載nginx後檢查錯誤日誌和/或使用

nginx -t