|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行。
我一向以为本人的Nginx常识还算过得往,但是我错了,设置Nginx代办署理的遭受让我苦不胜言,即使云云,我仍是挣扎着纪录一二,以便让厥后者可以踩着我的脚印持续行进。
提及来十分复杂:某项目标搜刮功效晋级了,必要把哀求从旧的服务代办署理到新的服务下面往,个中有点儿纷歧样的中央是参数的传送情势产生的变更,例子以下:
- 旧:http://www.old.com/search/lamp
- 新:http://www.new.com/search?q=lamp
第一次实验:
- location~^/search/(.+){proxy_passhttp://www.old.com/search?q=$1;}
复制代码 惋惜当测试的时分发明在毛病日记里呈现以下信息:noresolverdefinedtoresolve… 也许意义是说没有设置resolver指令来剖析域名。我就奇异了:印象中之前用proxy_pass的时分没设置resolver也能事情啊?带着疑问搜刮了一下,发明这是一个老坑了,其缘故原由在于假如代办署理地点中包括变量的话,那末必需设置resolver指令!
第二次实验:
由于我不太喜好在Nginx设置文件里硬编码resolver指令,以是我想既然成绩呈现在变量身上,那末只需想举措把变量从代办署理地点中移除应当就能够了:- location~^/search/(.+){set$args$args&q=$1;proxy_passhttp://www.old.com/search;}
复制代码 惋惜当我重启Nginx的时分发明堕落了:“proxy_pass”cannothaveURIpartinlocationgivenbyregularexpression,orinsidenamedlocation,orinside“if”statement,orinside“limit_except”block… 也许意义是说在以下情形下,proxy_pass指令不克不及包括URI,相干情形分离是:正则表达式location;定名location;if;limit_except。本例恰好用到了正则。
第三次实验:
既然URI的存在妨害了我们,那末就想举措从代办署理地点中移除它:- location~^/search/(.+){rewrite./search?q=$1break;proxy_passhttp://www.new.com;}
复制代码 事不外三,我想此次应当乐成了吧,惋惜适得其反,代办署理事后查询变量消散了!缘故原由是正则表达式location中的变量没法间接在rewrite指令中利用。
使用gcc或g++进行编译,使用gdb进行调试; |
|