nginx自带变量只要其中一部分怎么办?

发布于 2022-09-06 10:21:32 字数 286 浏览 14 评论 0

各位大虾好!小虾有事相求

假设我有一个$arg,arg里面有一个字段是state,现在$arg_state取到的值是:/http%3A%2F%2Fdvlshop.lechange.com%2Fproduct-79.html

现在我希望获取http%3A%2F%2Fdvlshop.lechange.com%2Fproduct-79.html (不要前面的反斜杠)  或者是 /product-79.html (不要中间的网站)   请问应该怎么写?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

二智少女 2022-09-13 10:21:33

nginx不做逻辑相关的业务,你的需求直接用nginx无法实现。改用lua吧

神也荒唐 2022-09-13 10:21:33

谢邀!
首先恭喜您已经解决了该问题!白天忙于nextjs + react + 。。。 重构项目,没来得及看!真是抱歉!要想回答该问题,就不得不说一说在浏览器中输入一个URL后都发生了什么?以下是一个大概流程:

  1. 浏览器向DNS服务器查找输入URL对应的IP地址;
  2. DNS服务器返回网站的IP地址;
  3. 浏览器根据IP地址与目标web服务器建立TCP连接;
  4. 发送HTTP请求;
  5. 服务器处理请求;
  6. 返回响应结果;
  7. 关闭TCP连接;
  8. 浏览器解析HTML;
  9. 浏览器布局渲染;

Nginx 是一个高性能的HTTP和反向代理web服务器,而您在http。。。 前面加上一个/,DNS解析不到对应的IP,更不要说建立TCP连接了,所以您在http。。。 前面加上一个/根本到不了nginx这一步。假设真能到nginx这一步,nginx是可以通过正则匹配,重写路由的!

我很OK 2022-09-13 10:21:33

虽然不知道你要干嘛,但是你想获取的这个值,原生nginx确实做不到,像上一位答主说的,nginx不做业务相关逻辑,如果你非要做不可, 在你现有的nginx上安装 lua_module或者直接换成openresty,用lua去实现这块的逻辑。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文