upstream testing {
server 127.0.0.1:8000;
}
server {
listen 80;
server_name www.testing.test;
charset utf-8;
client_max_body_size 75M;
access_log /var/log/nginx/www.testing.test.access.log;
error_log /var/log/nginx/www.testing.test.error.log;
location /api/ {
include /vagrant/api/uwsgi_params;
uwsgi_pass testing;
}
location / {
root /vagrant/frontend;
}
}
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
我的Django url模式:
urlpatterns = [
url(r'^admin/', admin.site.urls),
]
自动取款机。我使用以下命令运行Django:
uwsgi--socket:8000--wsgi-file wsgi.py
我可以访问Django,但是当我试图访问
www.testing.test/api/admin
时,我得到了一个404(从Django调试)。
Page not found (404)
Request Method: GET
Request URL: http://www.testing.test/api/admin
Using the URLconf defined in testing.urls, Django tried these URL patterns, in this order:
^admin/
The current URL, api/admin, didn't match any of these.
uwsgi_param SCRIPT_NAME /api;
uwsgi_modifier1 30;
但这让我的Django告诉我一个404
Request URL: http://www.testing.test/api/api/admin
当我请求
Request URL: http://www.testing.test/api/admin
我很难理解您的问题,但基本上是这样的:我希望nginx
将所有对/api/
的调用传递给django,但django收到的URL前缀为/api/
。
我会使用nginx
的重写来解决这个问题
location /api/ {
rewrite ^/api/(.*) /$1 break;
include /vagrant/api/uwsgi_params;
uwsgi_pass testing;
}
它将删除URL的/api/
部分,并保留在UWSGI_PASS
到Django的块中。
上述内容适用于进入Django的第一个URL。然而,django对删除的前缀一无所知,并且很难为自己生成URL。在一些简单的API中,这可能不是一个问题,但它往往是一个问题。
我想,唯一可行的方法是将前缀添加到基urlconf中。
from django.conf.urls import include
mypatterns = [
url(r'^admin/', admin.site.urls),
]
urlpatterns = [
url(r'^api/', include(mypatterns)),
]
虽然,我觉得这是一个非常肮脏的解决方案。
我遵循本教程,但我有一个问题,我得到了502 Nginx错误。 教程链接 我检查了错误日志,上面写着 uwsgi.log ImportError:没有名为khcards的模块。wsgi 我的uwsgi文件是这样的 我的nginx。形态 服务器{监听80;server_name域www.domain.co.uk;根 /var/www/example.com/src/khcards;access_lo
我在Nginx上使用uwsgi运行我的DJango应用程序。它目前正在使用这些配置: chdir=/TMP/SRC/ 进程=4 线程=2 server_name 192.168.56.104; charset UTF-8; #最后,将所有非媒体请求发送到Django服务器。 我已经生成了证书。
我需要在收到POST请求时执行一些缓慢的任务。我的服务器在UWSGI下运行,UWSGI以一种奇怪的方式运行 本地主机(): 当从浏览器接收请求时,我做。浏览器立即跟随重定向,工作过程在后台开始 UWSGI(2名工人): 后台进程开始,但浏览器不会重定向。它等待直到孩子退出。 注意,我在uwsgi配置中添加了(如文档和在uwsgi应用程序中运行子进程时所建议的)参数,但没有明显的效果,应用程序等待子
在前面的章节中我们使用 python manage.py runserver 来运行服务器。这只适用测试环境中使用。 正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, Nginx, lighttpd等,本文将以 Nginx 为例。 安装基础开发包 Centos 下安装步骤如下: yum groupinstall "Development tools" yum install
问题内容: 有人可以解释守护程序模式下的apache mod_wsgi和线程模式下的django fastcgi之间的区别。我认为它们都使用线程进行并发。 假设我将nginx用作Apache mod_wsgi的前端。 更新: 我正在比较在fastemon中内置的django(./manage.py method = threaded maxchildren = 15)和mod_wsgi在“守护程序
在尝试部署我使用django开发服务器开发的博客时收到400错误后,我开始了一个新的测试项目(使用start project,不做其他任何事情——只是在这里和那里进行一点配置)-尽可能少,以保持尽可能简单。 当我执行“manage.py runserver”时,它会显示一个页面,说我看到了这个,因为我的设置中有“DEBUG=True”。 到现在为止,一直都还不错。没有错误。 但是如果我使用uWSG