Nginx配置问题:无法将/something/路径正确映射到目标目录
解决Nginx路径映射问题
你的问题出在root指令的工作逻辑上:root会把location匹配到的路径追加到指定的根目录后面,所以当你请求example.com/something/1.txt时,Nginx会自动拼接成/home/user/examplefolder/something/1.txt,这和你期望的路径不符。
给你两种可行的解决方法:
方法一:使用alias指令(推荐)
alias是专门用来替换location匹配路径的指令,正好符合你的需求。修改配置如下:
location /something/ { alias /home/user/examplefolder/; index index.html index.htm; }
当请求/something/1.txt时,Nginx会把/something/替换成/home/user/examplefolder/,最终查找的路径就是/home/user/examplefolder/1.txt,完全符合你的要求。
注意:alias后面的目录结尾斜杠最好和location的结尾斜杠保持一致,避免出现意外的路径拼接错误。
方法二:用rewrite配合root
如果一定要用root,可以通过rewrite把/something/后面的路径提取出来,再指向根目录:
location /something/ { rewrite ^/something/(.*)$ /$1 break; root /home/user/examplefolder/; index index.html index.htm; }
这里的rewrite规则会把/something/xxx重写为/xxx,之后root就会去/home/user/examplefolder/下查找对应的文件。
内容的提问来源于stack exchange,提问作者jkon
相关产品推荐
相关产品推荐

