zhangbao0325

Results 17 comments of zhangbao0325

> 第三步,post数据的时候需要把其他模块指令也push上去。 > > 同时注意,改模块的兼容列表中未写明有chash模块,所以不保证100%兼容。不过可以自行测试下。 其中第二步就已经是把chash模块的指令加上了,但是结果是不管怎么变request_uri,请求都是打到了一台机器上,这个是有问题的。是不是现在不支持hash配置的upstream变更?

> 那应该就是不兼容了,因为该模块没有测试过。 > > 自行调试可以这样: > > 你可以看下 第二步 `通过curl测试,无论怎么变url参数,请求会一直固定的打到一台机器上。` 这个步骤对应的访问请求的debug log 查看其中的upstream chash模块是否work 好的,我调试看看。

你在你的server段里加上一个 location /api就行了 server { listen 80; server_name orange.com; location = /favicon.ico { log_not_found off; access_log off; } location / { set $upstream_host $host; set $upstream_request_uri ''; set $upstream_url '';...

第一个问题: 这些set配置不是必须的,这些变量是部分插件里会用到的,并且会根据你配的规则来改写这些变量的值,如果你不用相关插件,这些变量不配置也不会影响。 第二个问题: 每个插件的执行阶段是不一样的,有的在rewrite_by_lua阶段,有的在access_by_lua阶段,有的在balancer_by_lua阶段,如果有些插件功能你不用到,不配置也可以,但是建议去修改orange.conf里的配置来卸载和加载插件,而不是改nginx.conf配置。 第三个问题:你可以理解selector是 一个粗分,rule是细分。一般情况下,selector里可以配置成全流量选择器,表示对所有的请求对生效,然后在rule里设置对具体的接口匹配。或者是可以在selector里配置自定义选择器(比如按照域名进行一级筛分),然后在rule里配置更加细粒度的规则(比如uri match /appdata)。 具体的逻辑,你可以参照plugins下的各插件的源码分析。

1 配置rewrite_by_lua_block的本质目的是让它执行orange.rewrite(),你可以看到orange.rewrite里会去依次执行每个插件在rewrite阶段的逻辑。如果你删除了rewrite_by_lua_block,那你配置的rewrite插件规则都不会生效。另外,这个也不是说一定要写在server段里,如果你为了方便,写在http段里也是可以的,这样的话就会对所有的server配置都生效。 2 如果你配置了全流量选择器,那么只要一个请求过来了,这个selector都会匹配中,然后会进一步的去匹配这个full selector底下的rule,但这会影响效率。 比如我就希望A.com的这个域名下的所有接口都生效,那我完全可以在selector里配置成自定义的: host match A.com,然后在这个selector下去配具体的规则。这样如果来的请求是B.com,则它在selector的判断阶段都不通过,也不会再去多余的判断A.com底下有哪些规则了。说白了就是给你提供一个先一级筛分,再二级筛分的手段,避免不必要的遍历操作。

我们的生产环境中,selector全部配置的是按照域名筛分,即host == A.com, 然后在每个域名对应的selector下配置接口的规则。 如果只有一个domain用到了,可以只写在这里面,其他sever段的请求不受orange插件的影响。

如果逻辑比较复杂,建议你去orange的项目里增加自己的逻辑代码,而不是写在nginx配置文件中,或者修改已有插件的逻辑,或者根据自己的需求打造一个插件,放在plugins目录下即可。

> 你好,我这边安装orange 一直没安装成功 > orange start 启动报这个错 > nginx: [error] init_by_lua error: ./lualib/resty/pl/path.lua:28: pl.path requires LuaFileSystem > 但是 > luafilesystem 1.7.0-2 is now built and installed in /usr/local (license: MIT/X11)...

> ##### Version > v0.7.0 > > ##### Plugin > Jwt Auth > > ##### Configuration > * nginx.conf > > ``` > location = /sign { > content_by_lua '...