Articles of django

无法使uginx与uWSGI一起工作

我有这个名为test.pytesting文件: def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] 我使用这个命令运行uWSGI: uwsgi –http :8001 –wsgi-file test.py 我可以通过转到xxxx.xxxx.xxxx.xxxx:8001来在浏览器中看到“Hello World” 现在我正在尝试添加Nginx。 这是我的文件mysite_nginx.conf : # mysite_nginx.conf # the upstream component nginx needs to connect to upstream django { # server unix:///path/to/your/mysite/mysite.sock; # for a file socket server 127.0.0.1:8001; # for a web port socket (we'll use this first) […]

请求主体未被读取时,ERR_INCOMPLETE_CHUNKED_ENCODING

以下是我对一个有趣的错误的讨论,尽pipe我已经解决了,但我不明白。 我find了一个解决scheme ,但是我真的希望有人能够提供一些洞察错误的真正原因。 问题的背景 这个问题首先出现在我们的Django应用程序的生产服务器上。 堆栈如下 AngularJS nginx的 uWSGI Django的 PostgreSQL的 我们的团队在Safari上发现了一个POST请求。 Safari会在响应中窒息并吐出一个ERR_INCOMPLETE_CHUNKED_ENCODING 。 这个post的要求如下: class ContractCloseOutSubmitView(APIView): def post(self, request, contract_id): contract = get_object_or_404( ContractCloseOut, pk=contract_id) if contract.submit(): return Response({"detail": "Closed successfully."}, status=200) else: raise ParseError("Could not submit.") 该请求是将对象标记为closures的简单请求。 我们在现场的许多地方使用这种模式,所以这个问题显然需要注意。 解 我们的第一个线索是请求确实closures了这个对象。 也就是说, if contract.submit()必须已经到达的话。 这将问题缩小到了答复。 我做了一些阅读,导致这个错误的原因有很多。 我们尝试了: 在Django中显式设置内容长度 一些黑客认为nginx可以更加可靠地判断内容的长度 用几种不同的方法重写代码 没有任何工作,问题仍然没有发生在本地。 所以我们决定在本地复制整个堆栈并进行testing。 一次一个,我们删除了networking层的元素,并确定删除nginx并直接与uWSGI交谈解决了这个问题。 所以现在我们确信问题在于nginx,但是还是没有办法解决。 […]

uwsgi不创build套接字文件

我有以下configuration: [uwsgi] vhost = true plugins = python,logfile socket = /tmp/mysite.com.sock master = true enable-threads = true processes = 4 wsgi-file = /home/ubuntu/myappwebsite/myapp/myapp/wsgi.py chdir = /home/ubuntu/myappwebsite/myapp touch-reload = /home/ubuntu/myappwebsite/myapp/myapp/reload logger=file:/tmp/uwsgi-error.log vacuum = true 和nginx: server { listen 80; server_name mysite.com www.mysite.com; access_log /var/log/nginx/mysite.com_access.log; error_log /var/log/nginx/mysite.com_error.log; client_max_body_size 75M; location / { uwsgi_pass unix:///tmp/mysite.com.sock; include uwsgi_params; } […]

与Nginxredirect的Django频道

我为我的Django应用程序使用Django频道。 在Django之上,我添加了nginx作为http请求的层。 所有的http请求都运行良好,但是当我尝试创buildwebsocket连接时,得到了302 HTTP代码。 Nginxconfiguration # Enable upgrading of connection (and websocket proxying) depending on the # presence of the upgrade field in the client request header map $http_upgrade $connection_upgrade { default upgrade; '' close; } # Define connection details for connecting to django running in # a docker container. upstream uwsgi { server uwsgi:8080; […]

无效的HTTP_HOST标头:'localhost:90,localhost:90'。 根据RFC 1034/1035提供的域名无效

我正在尝试将Nagios和Gunicorn一起configuration为一个Django项目。 nginx给我以下错误: DisallowedHost at / Invalid HTTP_HOST header: 'localhost:90,localhost:90'. The domain name provided is not valid according to RFC 1034/1035. 这是我的nginxconfiguration server { listen 90; listen [::]:90; server_name xxxx; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/user/djangopro/djangoapp; } location / { include proxy_params; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; […]

dockerNGINX代理不转发Websockets

NGINX代理传递HTTP GET请求而不是WebSocket握手到我的Django应用程序。 事实: 其余的非websocket代理django应用程序是伟大的。 如果我直接连接到django应用程序容器,我可以让WebSockets工作。 (下面的相关日志条目。) nginxconfiguration在我的开发机器上运行localhost(没有集装箱)。 (下面的日志示例) 相关日志: 达芙妮日志时通过集装箱的nginx代理连接: `xxx.xxx.xxx.xxx:40214 – – [24/May/2017:19:16:03] "GET /flight/all_flight_updates" 404 99` 达芙妮日志绕过集装箱代理,并直接连接到服务器: xxx.xxx.xxx.xxx:6566 – – [24/May/2017:19:17:02] "WSCONNECTING /flight/all_flight_updates" – – xxx.xxx.xxx.xxx:6566 – – [24/May/2017:19:17:02] "WSCONNECT /flight/all_flight_updates" – – 本地主机testingnginx(非集装箱)configuration工程: [2017/05/24 14:24:19] WebSocket HANDSHAKING /flight/all_flight_updates [127.0.0.1:65100] [2017/05/24 14:24:19] WebSocket CONNECT /flight/all_flight_updates [127.0.0.1:65100] configuration文件: 我docker-compose.yml : version: '3' services: db: […]

子域与文件夹/目录

我目前正在构build一个Web应用程序,我希望我的用户有自己的URL来标识它们。 我可以做这个使用子域名或使用文件夹,我想知道什么是两者的优点和缺点。 我真的很喜欢这个文件夹解决scheme,因为我的url映射相当简单。 我已阅读有关自动生成的子域名,一个解决scheme是创build虚拟主机,然后重新启动我的nginx。 这是一个解决scheme,但我宁愿不必每次创build一个新的帐户时重新启动我的Web服务器。 如果有任何其他的方法来做自动子域创build,这将是伟大的! 谢谢!

Nginx:多个Django项目与项目根?

通常我使用的是切诺基。 由于最新的chrome发行版的一些关键问题,我不得不暂时将我的高效服务器更改为nginx。 目前正试图让我的configuration像在切诺基一样工作。 我正在使用一个非常简单的uwsgi处理程序: location /project1 { include uwsgi_params; uwsgi_pass localhost:3032; } 工作正常,该项目可在myurl.com/project1上find。 但是django把myurl.com当作项目的根源。 示例我希望如何工作:一个子域上的多个项目:/ project1上的project1,/ project2上的project2等 Django正则expression式规则“^ $”应该适用于每个项目,如: 在Project1中:^ $ – > / project1 在Project2中:^ $ – > / project2等 有没有办法让这个在Nginx的工作? 干杯,

Nginx + Django + Phpmyadminconfiguration

我已经将我的服务器迁移到amazon ec2,并尝试在此设置以下环境: Nginx在前台提供静态内容,传递给django用于dynamic内容。 我也想在这个设置中使用phpmyadmin。 我不是一个服务器pipe理员,所以我只是遵循几个教程,使nginx和Django的运行。 但是我已经工作了两天,现在试图挂钩phpmyadmin到这个设置,没有用。 我现在正在发送当前的服务器configuration,如何在这里为phpmyadmin服务? server { listen 80; server_name localhost; access_log /opt/django/logs/nginx/vc_access.log; error_log /opt/django/logs/nginx/vc_error.log; # no security problem here, since / is always passed to upstream root /opt/django/; # serve directly – analogous for static/staticfiles location /media/ { # if asset versioning is used if ($query_string) { expires max; } } location […]

在使用django + nginx + flup时,打印语句写到哪里?

我试图debugging我的django应用程序,但这很难,因为我不知道我的打印语句发送输出。 我用django和nginx使用flup和fastcgi,而且我可以通过nginx看到python错误和访问日志,但是我不知道我的打印语句在哪里。 以下是我的nginx.conf文件中的相关内容: server { listen 80; server_name localhost; access_log /var/log/nginx/demo.access.log; error_log /var/log/nginx/demo.error.log; location / { include fastcgi_params; fastcgi_pass 127.0.0.1:9001; } } 我使用这个命令运行fastcgi: python manage.py runfcgi host=127.0.0.1 port=9001 我基本上遵循这个教程https://code.djangoproject.com/wiki/DjangoAndNginx和我的操作系统是Ubuntu的! 谢谢您的帮助!