У меня есть 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;
}
nginx сопоставляет разделы «местоположение» не по порядку, а по наиболее точному, прочтите здесь . Затем к запросу применяется только наиболее подходящий раздел местоположения, и ни один из остальных. Следовательно, "location /" будет действовать только на запросы, которые не совпадают ни с одним из других разделов местоположения (все они являются более конкретными).
Попытайтесь поместить директивы auth вне любой скобки местоположения, прямо на сервер {} .