
特定の国以外のユーザーが Web サーバーにアクセスできないように、Nginx v. 1.24.0 と GeoIPupdate を設定しようとしています。
しかし、すべてのガイドに従っていると、リンクが機能しないか、MaxMind によってリンクが削除されているか、必要なモジュールがインストールされていると想定されているかのどちらかで、ガイドが古くなっていることがわかります。
公式のNginx wikiも役に立たなかった(nginx.org/ja/docs/http/ngx_http_geoip_module.html を参照してください。)
もう途方に暮れていて、どうしたらいいのかわかりません。GeoIPupdate は実行しているので、GeoIPupdate が Nginx で動作できるようにする方法を知りたいだけです。
私はこのガイドを試しました:https://github.com/leev/ngx_http_geoip2_module しかし、今は次のようになっています:
Apr 24 15:25:51 localhost nginx[175588]: nginx: [emerg] unknown directive "if($allowed_country" in /etc/nginx/sites-enabled/default:80
Apr 24 15:25:51 localhost nginx[175588]: nginx: configuration file /etc/nginx/nginx.conf test failed
問題の構成(サーバー部分):
if($allowed_country = no) {
return 403;
}
Nginx モジュールを確認すると、50-mod-http-geoip.conf が存在し、ロードされているはずですが、nginx -V と記述してもモジュールが入力されません。
最も興味深いのは、nginx.conf が許可された国では機能し、エラーが発生しないことです。
答え1
私は、できるだけ面白くて悲しい方法で、それを自分で直しました。
覚えておいてください、私はこの奇妙なバグを数日間調査してきましたが、私の OCD が満足できるように設定ファイルにタブを追加したことが原因であることが分かりました。
これをコピーして貼り付けたらうまくいきました。 https://gist.github.com/dunderrrrrr/8d3fced1f73de2d70ede38f39c88d215 翻訳元: