Django 和 uwsgi 仅针对特定 URL 在生产中显示 502

Django and uwsgi shows 502 on production only for specific URLs

我最近将 Django 升级到 1.8,将 Celery 升级到 4.1.1。升级后,服务器上只有一个 url.

出现 502 错误

我正在使用 uwsgi。这是一些代码。 URL 我遇到的问题是 judging/

urlpatterns = patterns('lbb.views',
    url(r'^judging/', include('judging.urls')),
)

urls.py在判断应用

urlpatterns = patterns('judging.views',
    url(r'^$', AppView.as_view(), name='judge_home')
)

观点是

class AppView(TemplateView):
    template_name = 'judging/app.html'

    def get(self, request, *args, **kwargs):
        """ method get of class JudgeLoginView """
        if not request.user.is_authenticated():
            url="%s?next=%s" % (reverse("judge_login"), '/judging/#/judge_home')
            return redirect(url)
        return super(AppView, self).get(self, request, *args, **kwargs)

正常使用到运行。但是升级后我遇到了这个问题。 nginx 文件是

upstream application {
    server lbb-app:8000;
}


server {
    listen 80 default_server;

    charset     utf-8;

    client_max_body_size 4G;   # adjust to taste
    server_tokens off;

    add_header X-Content-Type-Options nosniff;

    add_header X-XSS-Protection "1; mode=block";

    add_header Cache-Control "no-store";

    add_header Pragma "no-cache";

    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";


    location /work {
        include     uwsgi_params;
        uwsgi_pass  application;
    }


    location / {
        include     uwsgi_params;
        uwsgi_pass  application;
    }
}

uwsgu.ini 是

[uwsgi]
env=DJANGO_SETTINGS_MODULE=lbb.settings.common
chdir=/opt/webapp
module=lbb.wsgi:application
reload-mercy=10
master=1
no-orphans=1
workers=4
enable-threads=1
single-interpreter=1
socket=:8000
harakiri=20
max-requests=5000
vacuum=1
buffer-size = 65535

我对 nginx 配置进行了一些更改并部署了几次。但是改回旧的并重新部署。每隔 URL 工作正常。除了我提到的 https://website/judging/。我试着评论一些不必要的代码。但是还是不行。

我认为有问题:

urlpatterns = patterns('judging.views',
    url(r'^$', AppView.as_view(), name='judge_home')
)

您应该从 url 模式中删除 $ 或 ^ 符号。