nginx服务器中若php项目的url带参数则报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx服务器中若php项目的url带参数则报错相关的知识,希望对你有一定的参考价值。

nginx服务器中若php项目的url带参数则报错
nginx服务器中若php项目的url带参数则报错
nginx服务器中若php项目的url带参数则报错
对!没错!所有的get方法都失效了!只能post!

参考技术A 今天项目中有一个手机站点需要用*.m.domain.com的三级域名访问。
如手机站点的访问网址为m.domain.com,手机下面的会员实际访问地址为index.php?username=$username,需要定向为username.m.domain.com域名访问,直接看详情
location /
if ($host ~* ^(.*).m.domain.com)
set $username $1;
rewrite ^/ /index.php?username=$username ;



例二:
将子域名

指向到
wap&page=qq&size=55&id=id56
nginx配置如下:
set $sub_domain “”;if ( $host ~* (.*)\.baidu\.com )set $sub_domain $1;
if ( $sub_domain != “www” )rewrite ^/([a-zA-Z]+)(\d+)/(\w+).html$ /index.php?domain=$sub_domain&page=$1&size=$2&id=$3 last;

Nginx无法获取带下划线的请求头数据问题

参考技术A 今天在开发中有这样一个请求:前端需要在http请求中携带参数,后端获取参数进行解析并进行后续操作。

前后端分离

前端:Nuxt + axios

后端:Springboot + dubbo

在线下环境进行测试的时候一切都是可以的,但是部署到线上环境却发现无法获取请求头中的参数信息

① 从代码版本来看,线上和线下都是一致

② 运行环境一致

③ 除新功能外,项目其他部分运行正常

以一个数据查询的功能为切入点,进行接口调试然后发现:

能正常获取请求头中的参数!

① 线下是本地运行,连接测试库

② 线上是云服务器运行,连接正式库

③ 线上有使用到Nginx反向代理

首先线上接口是OK,调试也正正常通。那么很大可能是前后端联调出的问题。于是我又运行本地的前端项目联调线上接口发现也是不行的。

到这里的话,问题已经很清晰了:线上项目有经过Nginx进行反向代理,那大概率就是Nginx这个环节出现问题了。

① 从Nginx日志中发现如下:

到这里已经很明确了,就是Nginx不能识别请求头中的access_token

② 网上查询相关资料

Nginx中关于: underscores_in_headers on;

的配置是默认关闭的,于是不能识别到accessToken

在server模块中配置: underscores_in_headers on;

access_token 修改为 accessToken

另外记录下遇到的其他问题:

① Dubbo中不能序列化HttpServletRequest,需要再消费者的业务实现类中进行数据获取,然后传递给生产者。

没有什么技术含量,流水账罢了...

以上是关于nginx服务器中若php项目的url带参数则报错的主要内容,如果未能解决你的问题,请参考以下文章

基于Nginx+PHP实现的带权限验证的静态文件服务器,如某些情景需要校验参数后才能返回资源,或者缩略图生成等。

Nginx无法获取带下划线的请求头数据问题

nginx二级目录index.php重写(php)

微信支付接口php版 notify_url.php 异步通知页面未成功执行

nginx使用arg_重写带参数url案例

关于ECSHOP模板架设的服务器php版本过高报错的解决方法