auth_basic и неавторизованные пользователи
Dmitriy Lyalyuev
dmitriy at lyalyuev.pp.ua
Mon Dec 3 08:01:21 UTC 2012
Добрый день.
Есть ситуация. Нужно по одному локейшену пускать как залогиненных
пользователей, так и нет. При этом, если пользователь был залогинен, то
выдается один контент, если нет - другой.
server {
listen 80;
server_name wiki.localdomain;
root /opt/data/wiki;
error_log /dev/null;
access_log /dev/null;
if ($args ~* "skin|raw|template|maxrev|minrev|currev") {
rewrite ^(.*)$ /bin/view/$1?;
}
rewrite ^/bin/view(.*)$ / redirect;
rewrite ^(/Help)$ /bin/view/Help last;
rewrite ^/(Main|System|Sandbox|Help)(/[A-Z].*)$ /bin/view/$1$2 last;
rewrite ^/([A-Z].*) /bin/view/Help/$1 last;
rewrite ^/(Help)(/[A-Z].*)$ $2;
rewrite ^/([A-Z].*) /bin/view/Help/$1 last;
rewrite ^/$ /bin/view/Help last;
location / {
limit_except GET POST { deny all; }
}
location ~* /pub/.*\.(s?p?html?|php3?|pl|py|cgi)$ {
types {}
default_type application/octet-stream;
}
location ~ /bin/configure {
# allow all;
deny all;
error_page 404 502 504 = @configure;
}
location ~
/bin/view/(System|System/.*|Main|Main/.*|Sandbox|Sandbox/.*) {
auth_basic "Enter your WikiName. (First name and
last name, no space, no dots, capitalized, e.g. JohnSmith). Cancel to
register if you do not have one.";
auth_basic_user_file /opt/data/wiki/data/.htpasswd;
error_page 404 502 504 = @foswiki;
}
location ~ /bin/.* {
error_page 404 502 504 = @foswiki;
}
location ~
(^/pub/Trash|^/lib|^/data|^/locale|^/templates|^/tools|^/work) { deny
all; }
location @foswiki {
gzip off;
fastcgi_pass unix:/var/run/wiki/fcgi.sock;
fastcgi_split_path_info ^(/bin/\w+)(.*);
fastcgi_param SCRIPT_FILENAME
/opt/data/wiki$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
include fastcgi_params;
}
location @configure {
gzip off;
fastcgi_pass unix:/var/run/wiki/configure.sock;
fastcgi_split_path_info ^(/bin/configure)(.*);
fastcgi_param SCRIPT_FILENAME
/opt/data/wiki/bin/configure;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REMOTE_USER $remote_user;
include fastcgi_params;
}
}
В данном случае должно работать так:
1. Пользователь заходит на /Help и видит контент, который доступен всем.
2. Пользователь, зайдя на /Main/... авторизуется, потом переходит на
/Help и видит административную часть страницы.
Если в локейшин /bin/.* добавить auth_basic, то все ок, кроме того, что
и у обычных пользователей начинает просить логин и пасс.
Может я как-то сложно объяснил, но сам решить проблему не могу. Помогите
пожалуйста.
Подробная информация о списке рассылки nginx-ru