nginx,uwsgi get方法请求参数过长怎么办

额外命令

cd /data/env/pyweb/bin
source activate 
killall -9 uwsgi
uwsgi -x /data/wwwroot/Logistics/Logistics.xml
nohup uwsgi /data/wwwroot/yiliao1/uwsgi.ini &
/usr/local/nginx/sbin/nginx  -s reload

前往nginx 配置文件目录

cd  /usr/local/nginx/conf

今天遇到了一个令人头痛的网络请求问题

背景说明,本人负责微信小程序的编写,但是后端用的是django
django 在外来请求为 post 的时候有csrf.CsrfViewMiddleware作为限制
通常解决办法为将前端代码和后段代码放在一起,但是由于微信小程序是提交到微信平台运行的,所以不能采用post 方法请求 django,但是采用get方法访问 django是, 本地测试正常,部署服务器时无法提交订单,因为请求参数过长,本人部署 采用了 nginx + uwsgi 的方式进行部署的 Django

所以猜测是不是nginx 限制了 get 请求头的长度 ,搜索后 发现这两个参数会影响请求头的长度,

client_header_buffer_size 代表了默认请求的长度
large_client_header_buffers 代表了 client_header_buffer_size 不足时
请求头会增大到多少

client_header_buffer_size   1k;
large_client_header_buffers  4 32k;

nginx全部配置文件

user root;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
		    listen 80;
		    server_name www.limengkai.work limengkai.work;
		    large_client_header_buffers 4 32k;
       	    client_header_buffer_size  1k;
		    rewrite ^(.*)$ https://${server_name}$1 permanent; 
		
		}
		
    server {
        listen 443 ssl http2;
        server_name www.limengkai.work limengkai.work;
        root /data/wwwroot/Logistics; #项目路径
        charset utf-8;
        ssl_certificate   /data/wwwroot/Logistics/1701030_www.limengkai.work.pem;#.pem证书路径
        ssl_certificate_key  /data/wwwroot/Logistics/1701030_www.limengkai.work.key;#.key证书路径
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        
        large_client_header_buffers  4 32k;
        client_header_buffer_size   1k;
        error_page 497  https://$host$request_uri;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8999;
           uwsgi_param UWSGI_SCRIPT Logistics.wsgi;
           uwsgi_param UWSGI_CHDIR /data/wwwroot/Logistics/;#项目路径
           
        }

    server {
        listen 1443 ssl http2;
        server_name www.limengkai.work limengkai.work;
        charset utf-8;
        ssl_certificate   /data/wwwroot/yiliao1/1701030_www.limengkai.work.pem;#.pem证书路径
        ssl_certificate_key  /data/wwwroot/yiliao1/1701030_www.limengkai.work.key;#.key证书路径
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        error_page 497  https://$host$request_uri;
        location / {
        	 include uwsgi_params;
        	 uwsgi_pass 127.0.0.1:5000;      # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
     }

     location /OnlineMedical/ {
        	 root /usr/local/nginx/html;
        	 index index.html;      # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
     }
       
        access_log  /data/wwwroot/yiliao1/www.limengkai.work.log;
        error_log  /data/wwwroot/yiliao1/www.limengkai.work.error.log;
    }

    server {
    listen 1401;             # 端口号 django 教程 
    server_name www.limengkai.work limengkai.work;           # 配置域名信息
    root /home/tomcat/apache-tomcat-9.0.21/webapps/web2_war/mk_learn/;               # 静态页面根目录
    index index.html;
    }

    server {
    listen 1402;             # 端口号  顾客的 网上书城
    server_name www.limengkai.work limengkai.work;           # 配置域名信息
    root /home/tomcat/apache-tomcat-9.0.21/webapps/web2_war/mk_learn/as2/;               # 静态页面根目录
    index index.html;
    }

    server {
    listen 1403;             # 端口号 
    server_name www.limengkai.work limengkai.work;           # 配置域名信息
    
     location / {
        	 root html/OnlineMedical;              # 静态页面根目录
   		 index   index.html;
     }

     location /OnlineMedical/static/{
     	alias /usr/local/nginx/html/OnlineMedical/static/;
     }
  
 
    }

}

但是 uwsgi 依旧需要更改配置文件 ,才可以解决问题,
添加
true
32768
即可,解除 对请求头的限制

<uwsgi>    
   <socket>127.0.0.1:8999</socket> <!-- 内部端口,自定义 --> 
   <chdir>/data/wwwroot/Logistics/</chdir> <!-- 项目路径 -->            
   <module>Logistics.wsgi</module>  <!-- Logistics为wsgi.py所在目录名--> 
   <processes>4</processes> <!-- 进程数 -->     
   <http-keepalive>true</http-keepalive>

   <buffer-size> 32768 </buffer-size>
   <daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuemake999

请我喝茶呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值