今天在给某网站写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 URL带参数转发的内容可以在作者的其他文章中找到,这表明作者可能对Nginx的高级配置有更深入的探讨和更多实用案例分享,这对于希望深入学习Nginx配置的读者来说是一个不错的学习资源。...
以下将详细介绍如何在Nginx中处理带参数的`rewrite`规则,以及如何去除或保留这些参数。 首先,`$query_string`变量包含了GET请求中的所有参数,而`$request_uri`则包含了原始URI,包括路径和查询字符串,但不包含...
"nginx实现带健康状态检测"是指通过Nginx配置,来定期检查后端服务器的健康状态,确保将流量转发到正常运行的服务上,从而提高系统的稳定性和可用性。这一功能对于大型分布式系统至关重要,因为它可以自动隔离故障...
例如,通过`proxy_cookie_path`指令可以指定在Nginx转发请求时保留Cookie的路径。如下所示: ```nginx proxy_cookie_path /jhyx/ /; ``` 4. proxy_set_header指令:Nginx通过`proxy_set_header`指令可以设置转发给...
通常,这会调用`nginx.exe`并传递必要的命令行参数,例如指定配置文件路径。 - **stopnginx.bat**:该脚本包含`taskkill`命令,用于终止正在运行的`nginx.exe`进程。`taskkill`是Windows命令行工具,用于结束指定的...
要运行Nginx,你需要编辑`conf/nginx.conf`配置文件,设置服务器块、监听端口、日志文件路径等参数。服务器块是Nginx处理请求的核心配置,可以配置多个域名、路径映射和反向代理规则。完成后,通过命令行执行`nginx...
本教程将带你深入理解Nginx的基础配置,通过实际操作让你轻松掌握配置技巧。 ### 1. Nginx架构与工作原理 Nginx采用事件驱动的异步非阻塞模型,能够同时处理大量并发连接,降低了系统资源的消耗。其主要工作在两个...
`start.cmd`通常会包含执行`nginx.exe`的命令,可能带有指定配置文件的参数,例如:`nginx.exe -c D:\ftp\nginx.conf`。而`stop.cmd`则会包含停止Nginx服务的命令,这可能是通过发送一个特定的信号或者执行`nginx....
开发网关项目时,在请求时往请求头header中放入了签名sign_key信息,在接收请求时再从header中拿出,在本地调试时是可以的,但上线之后通过Nginx代理之后发现拿不到。 location / { proxy_set_header X-Real-IP $...
例如,将所有以 `.html` 结尾的请求重定向到不带扩展名的 URL: ```nginx rewrite ^/(.*)\.html$ /$1 permanent; ``` 这条规则会将 `example.html` 重定向为 `example`。 **根据 URL 参数 使用 location** 在...
关闭 Nginx,你需要使用带有 `-s` 参数的命令,`nginx.exe -s stop`,这会立即停止 Nginx 服务。为了确认 Nginx 是否已经关闭,你可以检查进程管理器中是否有 Nginx 的进程存在。 如果你想更新 Nginx 的配置文件而...
- **无缓冲的处理流程**:Nginx在某些情况下可以直接转发请求而无需缓冲数据。 - **带缓冲的处理流程**:对于需要缓冲的情况,Nginx会先缓存数据再进行处理。 - **subrequest访问upstream的处理流程**:Nginx如何...
1. **不包含斜杠**:当`proxy_pass`后面不带斜杠时,例如`proxy_pass http://backend;`,Nginx会将请求的URI与代理服务器的URL进行拼接。这意味着如果客户端请求的是`/service`,Nginx将会把完整的`/service`路径...
1. 轮询(默认):Nginx会将所有请求按顺序逐一分配给后端服务器,后端服务器配置不需要指定额外参数,如: ```nginx upstream backend { server ***.***.*.**; server ***.***.*.**; } ``` 2. weight(权重):...
比如,当用户首次访问时,Nginx可以设置一个带有特定标识的cookie,后续请求中,Nginx根据这个cookie将请求转发回对应的服务器。 5. **SSM整合Redis的实现步骤** - 首先,添加Redis的Java客户端库(如Jedis或...
此外,`proxy_pass`后面的URL是否带斜杠`/`决定了路径的相对性,合理使用可以灵活控制请求的转发路径。 总结,Nginx的负载均衡策略提供了多种方式来优化服务的高可用性和效率,结合实际场景选择合适的策略,并通过...