我在nginx上遇到问题,无法接收表单数据。
现在我正在使用Nginx和AWS EC2准备Web应用程序。
当前,通过ssh将ubuntu + django + uwsgi + nginx放置在ec2上。
问题是,在我的计算机上,ec2 Public Instances页面上的所有功能都正常运行,但是如果另一台计算机(不同的IP)进入该页面(页面打开正常)并尝试将formData发送到服务器(nginx)然后发生error403(不完整的分块编码)。
它还在ec2的安全组中设置了80个端口。
如何接收外部用户从浏览器发送的视频文件(formData)?
到目前为止我所做的
1。设置client_max_body_sizeclient_max_body_size 50M;
2。更改chown-socket值660 => 666
3.change load balance round robin => hash
4。将nginx.conf的用户更改为www-data
//uwsgi.ini
[uwsgi]
uid=django
base=/var/www/fileconvert
home=%(base)/venv
chdir=%(base)
module=config.wsgi:application
env=DJANGO_SETTINGS_MODULE=config.settings
master=true
processes=5
socket=%(base)/run/uwsgi.sock
logto=%(base)/logs/uwsgi.log
chown-socket=%(uid):www-data
chmod-socket=666
vacuum=true
//uwsgi.service
[Unit]
Description=uWSGI Emperor service
[Service]
ExecStart=/var/www/fileconvert/venv/bin/uwsgi --emperor /var/www/fileconvert/run
User=django
Group=www-data
Restart=on-failure
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all
StandardError=syslog
[Install]
WantedBy=multi-user.target
// sites-available/fileconvert
upstream django{
server unix:/var/www/fileconvert/run/uwsgi.sock;
}
server {
listen 80;
server_name ec2_public_domain;
charset utf-8;
client_max_body_size 50M;
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass django;
}
}
如果您需要更多信息,我会立即添加。谢谢。
问题是csrf_token不匹配。
@ ensure_csrf_cookie应该放在视图的第一行。(在导入下)
并确保在脚本中设置了ajax或axios csrf_cookie。