目录位置的GeoIP2无法正常工作|没有目录位置工作

时间:2019-02-27 22:24:22

标签: nginx directory location geoip2

我的问题是这个。如果我使用目录指定了位置,但没有位置,则GeoIP2无法正常工作。

使用目录位置>不起作用

  location /test {
    if ($allowed_country = no) {
      return 403;
    }
  }

没有目录位置>工作!

if ($allowed_country = no) {
  return 403;
}

我的geoip2的nginx设置

http {

    geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {
            auto_reload 60m;
            $geoip2_metadata_country_build metadata build_epoch;
            $geoip2_data_country_code country iso_code;
            $geoip2_data_country_name country names de;
    }

    geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb {
            auto_reload 60m;
            $geoip2_metadata_city_build metadata build_epoch;
            $geoip2_data_city_name city names de;
    }

    map $geoip2_data_country_code $allowed_country {
            default no;
            DE yes;
    }

    ...

nginx -V

nginx version: nginx/1.15.8 (Ubuntu)
built by gcc 8.2.0 (Ubuntu 8.2.0-7ubuntu1)
built with OpenSSL 1.1.1a  20 Nov 2018
TLS SNI support enabled
configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/run/nginx.pid --lock-path=/var/lock/nginx.lock --user=www-data --group=www-data --build=Ubuntu --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-openssl-opt=enable-ec_nistp_64_gcc_128 --with-openssl-opt=no-nextprotoneg --with-openssl-opt=no-weak-ssl-ciphers --with-openssl-opt=no-ssl3 --with-pcre=/opt/pcre-8.43-RC1 --with-pcre-jit --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_slice_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_v2_module --with-http_secure_link_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-debug --with-compat --add-module=/opt/ngx_http_geoip2_module --with-compat --add-module=/opt/nginx-hmac-secure-link --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now'

1 个答案:

答案 0 :(得分:0)

我的虚拟主机配置

server {
    listen xxxxxxx:443 ssl http2;
    listen [xxxxxxx]:443 ssl http2;
    server_name xxxxxxx www.xxxxxxx xxxxxxx www.xxxxxxx;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    ssl_ecdh_curve secp384r1;
    ssl_prefer_server_ciphers on;
    ssl_certificate /etc/ssl/private/xxxxxxx.xx.crt;
    ssl_certificate_key /etc/ssl/private/xxxxxxx.xx.key;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/ssl/private/xxxxxxx.xx.crt;

    include /etc/nginx/acme.conf;
    access_log /var/logs/xxxxxxx-access.log combined;
    error_log /var/logs/xxxxxxx-error.log error;
    root /home/webs/xxxxxxx/;

    location / {
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$args;
    }


    location ~ ^(.+?\.php)(/.*)?$ {
        try_files /0679eb354b1e52a2dc2f96f34bc67b53.htm @php;
    }


    location @php {
        try_files $1 = 404;

        include /etc/nginx/fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.+)\$;
        fastcgi_param SCRIPT_FILENAME $document_root$1;
        fastcgi_param PATH_INFO $2;
        fastcgi_param HTTPS on;
        fastcgi_pass unix:/var/run/1-xxxxxxx-php-fpm.socket;
        fastcgi_index index.php;
    }

    location ~* .(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        expires max;
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        access_log off;
        log_not_found off;
    }

}