额外命令
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>