作者回复: location匹配时,是先做前缀字符串匹配,再做正则匹配,你可以再设置一个前缀匹配,例如location /Finance/asset/accessed/downloadAtt/,后面再配置proxy_pass http://test_server;,这样不会命中location ~ /Finance/([-_a-zA-Z0-9/]+)
作者回复: rewrite影响不大,对pcre库尽量使用较新的版本编译nginx。相比Openresty中的Lua代码,Nginx官方模块的指令对性能影响都不大,而一旦使用Lua后,就要非常慎重。
作者回复: 1、rewrite_log确保打开;2、确保error.log的日志级别允许打印rewrite日志,比如设成info。
作者回复: 1、在server块中的rewrite指令,会先于location块中的rewrite指令执行,因为其在server_rewrite阶段执行。
2、只针对path路径,不包括query参数(这两个概念是URI的定义,参见我的Web协议课程第10课)
作者回复: 1、其实是3种情况:a. 没有=,则以原错误码返回客户端;b.=xxx,则以xxx作为响应码返回客户端,c.=(=后没有响应码),则以最后的uri导致的内部重定向location的返回码,作为客户端的错误响应码。
2、你用return指令了,它是rewrite模块提供的,它会让root html/;无法发挥作用,因为root由static模块生效,而static模块是content阶段的(参见第49课)。所以你应该把return 404注释掉就可以了。另外,return 404是不能使用error_page的。
作者回复: 1、关于重写URL。proxy_pass的重写URL能力非常弱,而且依赖location后的URL。rewrite可以重写任意URL。
2、关于反向代理。rewrite没有反向代理功能。第4部分有关于反向代理流程和原理的介绍。
作者回复: 加=号才是精确匹配,否则默认是前缀匹配。匹配规则参见第54课
作者回复: 不会,这个URL会直接作为Location返回给客户端
作者回复: 1、location的匹配中,正则表达式优先级高于字符串,但同为字符串时是按出现优先级的,所以你把/放在/tm/是不合适的,因为/tm/没有机会执行了,详见54课。
2、server rewrite先于location匹配的find_config阶段,所以rewrite会先执行的。
作者回复: 比如你的网站在做迁移,部分URL发生变动,或者为了增强SEO,对URL做变化等。
作者回复: query string指什么?某个变量的值?原始URL请求中的内容是不能修改的,只能修改某些变量
作者回复: 以它们在nginx.conf中的顺序而定
作者回复: try_files就可以哦,第1个参数配置本地资源路径,第2个参数用@内部重定向,到另一个proxy_pass反向代理中
作者回复: server_name localhost;注释掉看看?
另外,“登录没有响应”,请求发到nginx了吗?有access日志吗?error.log上有错误日志吗?
作者回复: rewrite没有默认flag。
作者回复: 呃,你是说return指令吗?