我正在用 C 编写一个社交网站,并使用 Nginx 提供所有服务。我怎样才能让经过身份验证的用户只进入他们自己的目录,而该目录下有一个用户特定的 index.html。我不是问如何用用户特定的指令填充 index.html,而是如何将它们锁定到他们自己的目录中
答案1
map $remote_user $profile_directory {
default $remote_user;
'' guests;
pavel admins;
ivan admins;
}
server {
location /profile/ {
alias /path/to/www/$profile_directory/;
...
}
}
- http://nginx.org/en/docs/http/ngx_http_core_module.html#variables
- http://nginx.org/r/map
- http://nginx.org/r/alias
- http://nginx.org/r/root
- http://nginx.org/r/location
第二个例子(见评论):
server {
location / {
auth_basic "Please Login";
auth_basic_user_file "/etc/nginx/htpasswd";
root /var/www/sites/mysite.com/http/$remote_user;
}
}
答案2
events {
}
http {
map $remote_user $profile_directory {
default $remote_user;
}
server {
root /var/www/sites/mysite.com/http;
location / {
auth_basic "Please Login";
auth_basic_user_file "/etc/nginx/htpasswd";
alias /var/www/sites/mysite.com/http/$profile_directory/;
}
}
}
这是我编辑的版本,其中包括我所有的 nginx.conf 配置文件