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

简介: 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>
相关文章
|
7月前
|
应用服务中间件 nginx
nginx配置项目的几种方法
nginx配置项目的几种方法
48 0
|
1月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
94 7
|
4月前
|
应用服务中间件 Linux 调度
干货!几个 Nginx 性能优化方法
干货!几个 Nginx 性能优化方法
162 0
|
2月前
|
中间件 应用服务中间件 nginx
Nginx+uWSGI+Django原理
Nginx+uWSGI+Django原理
|
2月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
195 0
|
4月前
|
应用服务中间件 Linux 网络安全
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
这篇文章提供了在CentOS 7系统上通过源码安装Nginx的详细步骤,包括从官网下载Nginx源码包、上传至虚拟机、解压、删除压缩包、编译安装前的配置、安装PCRE库(因为Nginx使用PCRE库解析正则表达式)、安装zlib和OpenSSL库(用于支持HTTPS协议)、重新编译Nginx、安装后启动Nginx服务、关闭服务、修改默认端口、以及重启服务测试等步骤。文章还提供了相关命令和操作截图,帮助用户更好地理解和执行安装过程。
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
|
3月前
|
Ubuntu 应用服务中间件 数据库
Nginx配置:阻止非国内IP地址访问的设置方法
此外,出于用户隐私和法律合规性的考虑,应慎重考虑阻止特定国家或地区IP地址的决策。在某些情况下,这可能被视为歧视性或违反当地法律。
225 2
|
3月前
|
监控 应用服务中间件 nginx
nginx+uwsgi+flask
nginx+uwsgi+flask
|
4月前
|
应用服务中间件 Linux 测试技术
Nginx+uWSGI
【8月更文挑战第22天】
45 6
|
4月前
|
网络协议 Unix 应用服务中间件
Nginx七层(应用层)反向代理:UWSGI代理uwsgi_pass篇
Nginx七层(应用层)反向代理:UWSGI代理uwsgi_pass篇
292 1