你應該在應用程式上下功夫,例如同一ip、同一帳號多少時間只能點多少首、api傳回時做認證...等,而不是在nginx上下功夫。
你設
$args ~* "cmd="
就只是把所有有cmd的GET request全部擋掉,你得想個辦法讓不管是NGINX還是應用程式,能夠認出你定義的非正常請求,才有可能做到這件事。
emmmm......透過cookie? 在點播時新增auth cookie點播完馬上刪除
然後用nginx的$cookie_name檢查就知道合不合法了
我印象中 nginx 的 $cookie
只是用來取值而已
你只依靠取值就能判斷合不合法?
froce大 的意思應該是要你從你的後端下手
看你用 JWT 之類的東西
然後每次點播就檢查這 token
看是不是合法或合理使用這樣
emm
只要被檢查到值不存在就不是用js點的就是非法
不是靠存不存在就能判斷合法的呀...
你不驗證這個你所謂的 認證用的cookie的話
那我在你這 認證用的cookie中
隨便帶個值
依照你上面提到的判斷邏輯
不就是合法請求了
阿要驗證的話通常是透過後端
nginx沒試過
不過就算要透過 nginx 來判斷
也不是只用取值這麼簡單而已
那我在想想其他方法好了
你在nginx一般來說只能檢查 $cookie_name 在不在GET裡,請問你要怎麼確認送出來的 $cookie_name 是合法的?
除非你nginx搭配lua模組然後去寫認證的code啦,不過相信會這樣做的不會問這種問題。