贊助商連結

Nginx check header

一般來說保護 RESTful API 最簡單的方法就是把 api key 放在 https header 裡面,然後 ap 再檢查 header api key 是不是合法的。

但是,因為我們的 ap 只有一個 api key ,所以就想用 nginx 來檢查 api key。

做法蠻簡單的

location /api {
	if ($http_x_your_api_key != '1234567890') {
  		return 403;
	}
}

假設 header 是 x_your_api_key ,在 nginx 裡面就用 $http_x_your_api_key 就可以取到 header。

接著就是判斷是否合法,不合法就吐 403 回去。

另外,如果之間吐 403 回去, nginx 會吐預設的 403 html 檔回去。

如果想吐 json 回去,可以定義一個 403 json response

location /api {
	error_page 403 = @403_json;
	if ($http_x_your_api_key != '1234567890') {
  		return 403;
	}
}

location @403_json {
	default_type application/json;
	return 403 '{"error":{"code":"FORBIDDEN"}}';
}

這樣就可以吐 403 json response 回去。

以上

Reference