作者回复: 如果你的URI与root/alias映射后对应的是目录,但是URI却没有以/结尾,就会返回301重定向,并在Location中把URI加上/结尾
作者回复: 如果要定制模块,建议不要用docker镜像,docker镜像只保持运行必要的软件,而编译需要依赖许多软件,安装非常麻烦。
作者回复: 你是指这个例子吗?例子中的配置反推其业务场景,可以得到:
1、这个location只能匹配/user/,要做前缀匹配URI。
2、前缀匹配完成后还不行,可能除了图片还有其他文件,这里只想对图片做处理。
3、需要从URI里取出图片的文件名,作为映射磁盘文件的规则。
针对以上三点,使用正则表达式可以很好的完成第2、3条(参见第54课),使用alias可以很好的忽略掉/users/这部分URI。
作者回复: 1、alias通常需要加/的原因是,location /i/这种配置最后带了/,所以拼接文件路径时已经把URL中/i/给移除了,少了一个/。如果你配置的是location /i就不需要。
2、当你的访问路径是由不同的请求内容决定的,例如HTTP头部、URL参数等,可以用变量。
作者回复: 这次看明白了:-)
1、
location ~ /download/ {
alias /usr/local/mywork/test/html;
}
有明显问题,例如访问/download/web/1.html 实际会访问/usr/local/mywork/test/htmlweb/1.html,肯定不存在。
2、2和4无限重定向的原因,可能是你的访问URL,在1.html后还有一个/所致。你把完整的配置,以及error.log日志发我邮件看看:russelltao@foxmail.com
作者回复: 我反复对比你列出的4个location和4个访问url,居然是完全一样的,是不是复制粘贴时出错啦??
作者回复: :-)
作者回复: 不是,主要是对所属location后url的处理上。