為某些 request_uri 新增 header

為某些 request_uri 新增 header

該應用程式處理所有路由。所以這個基本配置區塊是有效的:

location / {
    try_files $uri $uri/ /index.html;
}

問題是我想在訪客請求某個 URI 時添加自訂標頭。例如,/content。嗯,這一定很簡單:

location ~ ^/content {
   try_files $uri $uri/ /index.html;
   add_header X-CUSTOM-HEADER value;
}

但這是行不通的。 Nginx 沒有建立該標頭。然後,我嘗試try_files內容塊,但這顯然不起作用,因為/content根目錄中沒有“真實”資料夾。因此,nginx 將拋出404 未找到錯誤。

我還嘗試將該塊移動到根位置塊內。也不工作。


在 Apache 中,可以使用以下命令輕鬆完成此操作:

<If "%{THE_REQUEST} =~ pattern">
    Header set HEADER value;
</If>

答案1

您可以使用映射變數設定標頭。如果該變數設為空字串,則標頭將被默默丟棄。

例如:

map $request_uri $myheader {
    ~^/content   a_value;
}
server {
    ...
    add_header X-CUSTOM-HEADER $myheader;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

相關內容