【发布时间】:2020-06-06 01:50:39
【问题描述】:
我希望让 Nginx 允许任何子文件夹重定向到特定目录,但将所选子文件夹存储在标题中。
例如,我现在有这个可行的方法:
location ^~ /AhRnfKlM {
alias /var/www/html/admin;
index index.php index.html index.htm;
location ~ \.php$ {
limit_req zone=one burst=8;
try_files $uri =404;
fastcgi_index index.php;
fastcgi_pass php;
include fastcgi_params;
fastcgi_buffering on;
fastcgi_buffers 96 32k;
fastcgi_buffer_size 32k;
fastcgi_max_temp_file_size 0;
fastcgi_keep_conn on;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
因此,如果我转到http://website.com/AhRnfKlM/index.php,它不会有问题,但我想要的是能够选择任何子文件夹,例如http://website.com/test123/index.php,它仍然会正确别名,但将 test123 存储为标题例如我可以用 PHP 读取的 X-AuthCode,检查允许的身份验证代码的 mysql 数据库并决定从那里做什么。这样我就可以为特定管理员提供特定的访问代码,或者允许一次性访问代码存在,而无需使用新别名修改 NGINX。
我用正则表达式尝试了各种方法,例如:
location ~ ^(/[^/]+) {
alias /var/www/html/admin;
add_header X-AuthCode $1;
index index.php index.html index.htm;
location ~ \.php$ {
limit_req zone=one burst=8;
try_files $uri =404;
fastcgi_index index.php;
fastcgi_pass php;
include fastcgi_params;
fastcgi_buffering on;
fastcgi_buffers 96 32k;
fastcgi_buffer_size 32k;
fastcgi_max_temp_file_size 0;
fastcgi_keep_conn on;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
但不能让它工作!我只是得到 403 禁止。
整个服务器块(根据 Ivan 的建议):
server {
listen 80;
location ~ ^/(?<authcode>[^/]+) {
alias /var/www/html/admin;
index index.php index.html index.htm;
location ~ \.php$ {
limit_req zone=one burst=8;
try_files $uri =404;
fastcgi_index index.php;
fastcgi_pass php;
include fastcgi_params;
fastcgi_buffering on;
fastcgi_buffers 96 32k;
fastcgi_buffer_size 32k;
fastcgi_max_temp_file_size 0;
fastcgi_keep_conn on;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param AUTHCODE $authcode;
}
}
}
谢谢你:)
【问题讨论】:
标签: nginx