Nginx是否存在指代加载文件本地路径的变量?如何获知被服务文件?
Nginx 获取当前服务文件的本地路径方法
直接使用Nginx内置变量
$request_filename即可,它会返回当前请求匹配到的服务器端本地文件绝对路径。在你给出的try_files配置中,当请求命中$uri或$uri/index.html对应的本地文件时,这个变量就会指向该文件的真实路径。另外也可以用
$document_root(当前location的根目录)拼接$uri得到路径:$document_root$uri,但$request_filename更省心,因为它已经自动处理了try_files的匹配逻辑,无需手动拼接。如果要记录或验证具体提供服务的文件,可以在配置中添加自定义日志字段,示例如下:
location / { try_files $uri $uri/index.html @proxy; # 新增日志文件,专门记录本地文件路径 access_log /var/log/nginx/local_file_access.log "$remote_addr [$time_local] \"$request\" $status \"$request_filename\""; }
查看这个日志文件就能直观看到每个请求对应的本地文件路径,若请求最终走了@proxy代理,$request_filename会显示最后一次尝试查找的文件路径。
内容的提问来源于stack exchange,提问作者Doraemon
相关产品推荐
相关产品推荐

