2016-07-08 19 views
0

私は3000ポートで動作しているローカルサーバーを持っており、それはnginxサーバーにいくつかのPOST要求を送信します。 Nginxはrefererをチェックし、127.0.0.1:3000(すべてのサブドメイン)から来ていない場合は403 Restrictedを返し、それ以外の場合は9200/errors/browserエンドポイントへの有効なリダイレクトです。nginx - valid_referesは動作しません

現在、リファラーが有効かどうかにかかわらず、常にリダイレクトされます。私はnginxでそれが悪であることを知っているので、if-elseのアプローチはここでは機能しません。

server { 
    listen 127.0.0.1:9999; 
    server_name localhost;  

    location/{ 

     valid_referers none blocked server_names ~someaddress; 

     if ($invalid_referer) { 
      return 403; 
     } 

     # redirect to this endpoint if referer is valid  
     return 307 http://localhost:9200/errors/browser;  

    } 
} 
+0

「Referer」はブラウザのアドレスバーに表示されます。そこに '127.0.0.1:3000'が本当にありますか? –

+0

とにかく、有効なリファラーのリストに '127.0.0.1:3000'が表示されません –

答えて

-1

「リファラー」リクエストヘッダフィールド値を考慮すれば、それは、 空の文字列invalid_referer documentation

$によると、空の文字列であるように私は

if ($invalid_referer != "1") { 
    return 403; 
} 

を追加する必要があります有効であり、そうでなければ「1」である。

+0

空の' $ invalid_referer'はリファラーが有効であることを意味します。なぜ403を有効なrefererにしたいのですか? –

+0

@AlexeyTen、右、私はそれを編集すべきです、正しいオプションは '$ invalid_referer!=" 1 "'ありがとう – Novitoll

+0

まだ間違ったロジックです –

関連する問題