Nginx, все еще обслуживающий статические файлы, хотя доступ веб-сайта блокирован

У меня есть nginx, установленный на моем сервере песней. Я блокировал весь внешний доступ к тестовому веб-сайту, я продолжаю работать. С этим кодом.

location / {
    auth_basic "Administrator Login";
    auth_basic_user_file /home/config-files/.htpasswd;
}

Проблема, она не блокирует доступ к статическим файлам. Я могу все еще получить доступ к файлам как это.

wp-admin/images/icons32-vs-2x.png
wp-admin/css/colors/midnight/colors.min.css
wp-content/themes/testtheme/style.css

Почему Nginx не является blocing доступом к этим файлам.

РЕДАКТИРОВАНИЕ Здесь является полным виртуальным файлом хоста.

server {

    listen 80;
    server_name www.domainname.com;

    root /home/myuser/domainname.com/public;
    index index.html index.php;

    access_log /home/myuser/domainname.com/logs/access.log;
    error_log /home/myuser/domainname.com/logs/error.log;

    location ~ /\.svn/* {
        deny all;
    }

    location ~ \.(htaccess|htpasswd) {
        deny all;
    }

    location ~ \.conf$ {
        deny all;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
        auth_basic "Administrator Login";
        auth_basic_user_file /home/config-files/.htpasswd;
    }

    location ~ \.(css|js) {
        rewrite ^(.*/?)([a-z]+)-([0-9]+)\.(css|js)$ /$1$2.$4 last;
    }

    rewrite /wp-admin$ $scheme://$host$uri/ permanent;

    location ~* \.(js|css)$ {
        expires 30d;
        log_not_found off;
    }

    location ~* \.(?:ico|gif|jpe?g|png|svg)$ {
        expires 180d;
        add_header Pragma public;
        add_header Cache-Control "public";
        log_not_found off;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$; #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        include fastcgi_params;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9000;
    }

    rewrite ^(.*)/undefined$ /$1 permanent;
    rewrite ^(.*)/undefined/$ /$1 permanent;

}
0
задан 9 September 2014 в 11:01
1 ответ

nginx сопоставляет разделы «местоположение» не по порядку, а по наиболее точному, прочтите здесь . Затем к запросу применяется только наиболее подходящий раздел местоположения, и ни один из остальных. Следовательно, "location /" будет действовать только на запросы, которые не совпадают ни с одним из других разделов местоположения (все они являются более конкретными).

Попытайтесь поместить директивы auth вне любой скобки местоположения, прямо на сервер {} .

1
ответ дан 4 December 2019 в 17:11

Теги

Похожие вопросы