`
dxm1986
  • 浏览: 435236 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nginx转发不带参数

 
阅读更多

Nginx: rewrite重定向的参数处理问题

今天在给某网站写rewrite重定向规则时,碰到了这个关于重定向的参数处理问题。默认的情况下,Nginx在进行rewrite后都会自动添加上旧地址中的参数部分,而这对于重定向到的新地址来说可能是多余。虽然这也不会对重定向的结果造成多少影响,但当你注意到新地址中包含有多余的“?xxx=xxx”时,心里总还是会觉得不爽。那么该如何来处理这部分的内容呢?看了下面两个简单的例子你就会明白了。

例如:
http://example.com/test.php?para=xxx 重定向到 http://example.com/new
若按照默认的写法:rewrite ^/test.php(.*) /new permanent;
重定向后的结果是:http://example.com/new?para=xxx
如果改写成:rewrite ^/test.php(.*) /new? permanent;
那结果就是:http://example.com/new

所以,关键点就在于“?”这个尾缀。假如又想保留某个特定的参数,那又该如何呢?可以利用Nginx本身就带有的$arg_PARAMETER参数来实现。

例如:
http://example.com/test.php?para=xxx&p=xx 重写向到 http://example.com/new?p=xx
可以写成:rewrite  ^/test.php   /new?p=$arg_p?  permanent;

只求结果的朋友可以直接忽略前面的内容,看这里

rewrite  ^/test.php  /new  permanent;       //重写向带参数的地址

rewrite  ^/test.php  /new?  permanent;      //重定向后不带参数

rewrite  ^/test.php   /new?id=$arg_id?  permanent;    //重定向后带指定的参数

标签: Nginx
 
upstream biz{
        server 10.4.16.8:8080 max_fails=1 fail_timeout=600s weight=100;
    }

location /vip/ { 
  proxy_pass          http://backend_lattice_web/;
} 

访问http://xiaozhao.renren.com/vip/12345  
后端服务接收到的URI:/12345

想得到同样的结果也可以用rewrite 去做:
location /vip/ { 
  proxy_pass          http://backend_lattice_web/;
} 

location /vip {
            rewrite ^/vip/(.*)$  /$1  break;
            proxy_pass          http://web_backend;
        }
 
upstream biz{
        server 10.4.16.8:8080 max_fails=1 fail_timeout=600s weight=100;
    }

location /vip { 
  proxy_pass          http://backend_lattice_web/;
} 

访问http://xiaozhao.renren.com/vip/12345  
后端服务接收到的URI://12345
 
upstream biz{
        server 10.4.16.8:8080 max_fails=1 fail_timeout=600s weight=100;
    }

location /vip { 
  proxy_pass          http://backend_lattice_web;
} 

访问http://xiaozhao.renren.com/vip/12345  
后端服务接收到的URI:/vip/12345
 
 
 
 
 
 
 
 
 
分享到:
评论

相关推荐

    Nginx 根据URL带的参数转发的实现

    文章最后提到,更多关于Nginx URL带参数转发的内容可以在作者的其他文章中找到,这表明作者可能对Nginx的高级配置有更深入的探讨和更多实用案例分享,这对于希望深入学习Nginx配置的读者来说是一个不错的学习资源。...

    nginx中带问号(?) 带参数的rewrite规则

    以下将详细介绍如何在Nginx中处理带参数的`rewrite`规则,以及如何去除或保留这些参数。 首先,`$query_string`变量包含了GET请求中的所有参数,而`$request_uri`则包含了原始URI,包括路径和查询字符串,但不包含...

    nginx实现带健康状态检测

    "nginx实现带健康状态检测"是指通过Nginx配置,来定期检查后端服务器的健康状态,确保将流量转发到正常运行的服务上,从而提高系统的稳定性和可用性。这一功能对于大型分布式系统至关重要,因为它可以自动隔离故障...

    Nginx session丢失问题处理解决方法

    例如,通过`proxy_cookie_path`指令可以指定在Nginx转发请求时保留Cookie的路径。如下所示: ```nginx proxy_cookie_path /jhyx/ /; ``` 4. proxy_set_header指令:Nginx通过`proxy_set_header`指令可以设置转发给...

    nginx-1.16.1.zip

    通常,这会调用`nginx.exe`并传递必要的命令行参数,例如指定配置文件路径。 - **stopnginx.bat**:该脚本包含`taskkill`命令,用于终止正在运行的`nginx.exe`进程。`taskkill`是Windows命令行工具,用于结束指定的...

    nginx-1.7.9 windows 免安装版

    要运行Nginx,你需要编辑`conf/nginx.conf`配置文件,设置服务器块、监听端口、日志文件路径等参数。服务器块是Nginx处理请求的核心配置,可以配置多个域名、路径映射和反向代理规则。完成后,通过命令行执行`nginx...

    nginx基础配置.rar

    本教程将带你深入理解Nginx的基础配置,通过实际操作让你轻松掌握配置技巧。 ### 1. Nginx架构与工作原理 Nginx采用事件驱动的异步非阻塞模型,能够同时处理大量并发连接,降低了系统资源的消耗。其主要工作在两个...

    nginx FTP服务(nginx.conf已经配置到了D:\\ftp目录,可自行更改)

    `start.cmd`通常会包含执行`nginx.exe`的命令,可能带有指定配置文件的参数,例如:`nginx.exe -c D:\ftp\nginx.conf`。而`stop.cmd`则会包含停止Nginx服务的命令,这可能是通过发送一个特定的信号或者执行`nginx....

    Nginx代理时header头中带”_”信息丢失问题的解决

    开发网关项目时,在请求时往请求头header中放入了签名sign_key信息,在接收请求时再从header中拿出,在本地调试时是可以的,但上线之后通过Nginx代理之后发现拿不到。 location / { proxy_set_header X-Real-IP $...

    详解nginx rewrite和根据url参数location

    例如,将所有以 `.html` 结尾的请求重定向到不带扩展名的 URL: ```nginx rewrite ^/(.*)\.html$ /$1 permanent; ``` 这条规则会将 `example.html` 重定向为 `example`。 **根据 URL 参数 使用 location** 在...

    nginx使用说明1

    关闭 Nginx,你需要使用带有 `-s` 参数的命令,`nginx.exe -s stop`,这会立即停止 Nginx 服务。为了确认 Nginx 是否已经关闭,你可以检查进程管理器中是否有 Nginx 的进程存在。 如果你想更新 Nginx 的配置文件而...

    Nginx从入门到精通

    - **无缓冲的处理流程**:Nginx在某些情况下可以直接转发请求而无需缓冲数据。 - **带缓冲的处理流程**:对于需要缓冲的情况,Nginx会先缓存数据再进行处理。 - **subrequest访问upstream的处理流程**:Nginx如何...

    nginx配置文件中斜杠/的6种含义

    1. **不包含斜杠**:当`proxy_pass`后面不带斜杠时,例如`proxy_pass http://backend;`,Nginx会将请求的URI与代理服务器的URL进行拼接。这意味着如果客户端请求的是`/service`,Nginx将会把完整的`/service`路径...

    Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡.pdf

    1. 轮询(默认):Nginx会将所有请求按顺序逐一分配给后端服务器,后端服务器配置不需要指定额外参数,如: ```nginx upstream backend { server ***.***.*.**; server ***.***.*.**; } ``` 2. weight(权重):...

    ssm+redis+nginx实现session共享和负载均衡

    比如,当用户首次访问时,Nginx可以设置一个带有特定标识的cookie,后续请求中,Nginx根据这个cookie将请求转发回对应的服务器。 5. **SSM整合Redis的实现步骤** - 首先,添加Redis的Java客户端库(如Jedis或...

    Nginx实战进阶.pptx

    此外,`proxy_pass`后面的URL是否带斜杠`/`决定了路径的相对性,合理使用可以灵活控制请求的转发路径。 总结,Nginx的负载均衡策略提供了多种方式来优化服务的高可用性和效率,结合实际场景选择合适的策略,并通过...

Global site tag (gtag.js) - Google Analytics