在nGinx中检查GeoIP不起作用

cfh9epnr  于 2024-01-06  发布在  Nginx
关注(0)|答案(1)|浏览(237)

我有一个国家的列表,我想限制访问Web应用程序。例如,来自俄罗斯的用户应该被禁止访问我的Web应用程序。我下载了国家的数据库,并创建了一个单独的文件与Map。然后,我注册了俄罗斯在nginx.conf,但访问没有被阻止。可能是什么问题?

基地:

此文件的路径为:/etc/nginx/geoip/GeoIP.dat

新增包含map block.map.include的文件:

此文件的路径为:/etc/nginx/block.map.include

  1. geoip_country /etc/nginx/geoip/GeoIP.dat;
  2. map $geoip_country_code $allowed_country {
  3. default yes;
  4. RU no;
  5. ...//and more contries
  6. }

字符串

nginx.conf中添加了包含模块:

  1. include /etc/nginx/modules-enabled/*;

然后在http{}中添加:

  1. #GeoIP
  2. include /etc/nginx/block.map.include;

在所有server{}组中添加:

  1. if ($allowed_country = no) {
  2. return 403;
  3. }

我的完整nginx.conf

  1. user root;
  2. include /etc/nginx/modules-enabled/*;
  3. worker_processes auto;
  4. worker_rlimit_nofile 20960;
  5. events {
  6. worker_connections 1024;
  7. multi_accept on;
  8. use epoll;
  9. epoll_events 512;
  10. }
  11. http {
  12. #GeoIP
  13. include /etc/nginx/block.map.include;
  14. access_log /var/log/nginx/access.log combined;
  15. error_log /var/log/nginx/warn.log warn;
  16. server_tokens off;
  17. upstream thumbor {
  18. server localhost:8888;
  19. }
  20. upstream solr {
  21. server localhost:8983;
  22. }
  23. upstream minio {
  24. server localhost:9000;
  25. }
  26. upstream activemq {
  27. server localhost:8161;
  28. }
  29. upstream wildfly {
  30. ip_hash;
  31. server localhost:8008;
  32. server localhost:8018;
  33. }
  34. server {
  35. if ($allowed_country = no) {
  36. return 403;
  37. }
  38. listen 80 default_server;
  39. listen [::]:80 default_server;
  40. listen 443 ssl default_server;
  41. listen [::]:443 ssl default_server;
  42. ssl_certificate /etc/ssl/__****.crt;
  43. ssl_certificate_key /etc/ssl/private.key;
  44. ssl_verify_client off;
  45. root /var/www/special/not/exist/html;
  46. server_name ****.ru;
  47. location / {
  48. try_files $uri $uri/ =404;
  49. }
  50. }
  51. server {
  52. if ($allowed_country = no) {
  53. return 403;
  54. }
  55. listen 80;
  56. server_name ****.ru;
  57. rewrite ^ https://****.ru$request_uri? permanent;
  58. }
  59. server {
  60. if ($allowed_country = no) {
  61. return 403;
  62. }
  63. listen 443 ssl;
  64. server_name ****.ru;
  65. ssl_certificate /etc/ssl/__****.crt;
  66. ssl_certificate_key /etc/ssl/private.key;
  67. ssl_protocols TLSv1.2 TLSv1.3;
  68. ssl_ciphers HIGH:!aNULL:!MD5;
  69. add_header X-Frame-Options "SAMEORIGIN";
  70. add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
  71. client_body_buffer_size 8k;
  72. client_max_body_size 20m;
  73. client_body_in_single_buffer on;
  74. client_header_buffer_size 1m;
  75. large_client_header_buffers 4 8k;
  76. location /****/thumbor/ {
  77. proxy_pass http://thumbor/;
  78. }
  79. location /solr {
  80. proxy_pass http://solr;
  81. }
  82. location /minio {
  83. proxy_pass http://minio;
  84. }
  85. location /activemq {
  86. proxy_pass http://activemq;
  87. }
  88. location / {
  89. proxy_pass http://wildfly/;
  90. proxy_buffer_size 16k;
  91. proxy_buffers 16 16k;
  92. proxy_busy_buffers_size 64k;
  93. proxy_temp_file_write_size 64k;
  94. proxy_read_timeout 180s;
  95. proxy_set_header Host $host;
  96. proxy_set_header X-Real-IP $remote_addr;
  97. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  98. proxy_set_header X-Forwarded-Proto $scheme;
  99. if ($request_method !~ ^(GET|HEAD|POST|DELETE|PUT)$ ) {
  100. return 405;
  101. }
  102. }
  103. }
  104. }


P.S.服务器在DEBIAN上。nGinx中没有警告和错误。

djp7away

djp7away1#

你可以打开调试模式,就像上面提到的那样http://nginx.org/en/docs/debugging_log.html

相关问题