私はトラフィックをいくつかの国に制限しようとしていますが、私は単一のIPアドレスをホワイトリストに載せたいと思っています。ここに私のconfファイルです:複数の国をnginxでブロックしながらIPをホワイトリストに登録しますか?
# restrict access by country
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allow_visit {
default no;
US Yes;
GB Yes;
IL Yes;
CA Yes;
}
##
# Virtual Host Configs
##
server { # simple reverse-proxy
listen 80;
server_name xXmySiteXx;
root /usr/share/nginx/html;
# root /var/www/html;
index index.php index.html index.htm;
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
# reject unauthorized countries
if ($allow_visit = no) {
return 403;
}
私は次を追加しようとしました:
if($remote_addr = ipInQuestion) {
set $allow_visit = yes;
}
しかし、私はnginxのをリロードしようとすると、それが失敗しました。私が間違ってやっていることやこれを行うためのよりよい方法は何ですか?
EDIT:
私はnginxのから取得するエラーは次のとおりです。
nginxの:[EMERG]未知のディレクティブ "もし($ REMOTE_ADDR"
リロードしようとしたときに表示されるエラーは何ですか? – jpevarnek
関連のないメモとして、ifステートメントで変数を設定する必要はありません。 https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/ – jpevarnek
@jpevarnekが上記のエラーを追加しましたが、それはnginxです:[emerg]未知の指令 "if($ remote_addr" - 変数を設定するには、これを達成するための他のアイデアはありますか? – Matt