arachnys / cabot

Self-hosted, easily-deployable monitoring and alerts service - like a lightweight PagerDuty
MIT License
5.59k stars 594 forks source link

Reverse proxy with Gunicorn at port 5000 error #591

Closed sabueso closed 6 years ago

sabueso commented 6 years ago

Hi

I'm trying to run an Nginx as reverse proxy (with SSL enabled) for the instance of Gunicorn, that runs on port 5000

When I try to log in in the app (by /accounts/login or trough /admin), this error is raised:

Unhandled error. Please look at logs.

If we look at logs...

Traceback (most recent call last):
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 109, in get_exception_response
    response = callback(request, **dict(param_dict, exception=exception))
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/utils/decorators.py", line 149, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/views/defaults.py", line 45, in page_not_found
    body = template.render(context, request)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/backends/django.py", line 66, in render
    return self.template.render(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/base.py", line 207, in render
    return self._render(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 177, in render
    return compiled_parent._render(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 177, in render
    return compiled_parent._render(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 72, in render
    result = block.nodelist.render(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/base.py", line 990, in render
    bit = node.render_annotated(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/base.py", line 957, in render_annotated
    return self.render(context)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/template/defaulttags.py", line 458, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/urls/base.py", line 91, in reverse
    return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
  File "/home/cabot/cabot.venv/local/lib/python2.7/site-packages/django/urls/resolvers.py", line 497, in _reverse_with_prefix
    raise NoReverseMatch(msg)
NoReverseMatch: Reverse for 'user-profile' with arguments '(None,)' not found. 1 pattern(s) tried: ['user/(?P<pk>\\d+)/profile/$']

Now my Nginx's config is this:

server  {
        listen 80;
        #server_name www.mysite.com
        return 301 https://www.mysite.com$request_uri;
        access_log /var/log/nginx/www.mysite.com-access.log combined;
        error_log /var/log/nginx/www.mysite.com_error.log warn;
        }
server {

        listen 443 ssl;
        server_name www.mysite.com

        access_log /var/log/nginx/www.mysite.com-access.log combined;
        error_log /var/log/nginx/www.mysite.com-error.log warn;

        ssl_certificate /etc/letsencrypt/live/www.mysite.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.mysite.com/privkey.pem;

        ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers   on;
        ssl_ciphers                 EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

        server_tokens off;

        add_header X-Frame-Options SAMEORIGIN;
        add_header X-Content-Type-Options nosniff;
        add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

        client_max_body_size 50M;

        location / {
                proxy_pass http://127.0.0.1:5000;
    proxy_set_header        X-Real_IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        X-NginX-Proxy   true;
    proxy_set_header        Host            $http_host;
    proxy_set_header        Upgrade         $http_upgrade;
    proxy_pass_header       Set-Cookie;
        }
}

Any ideas? Thanks!

sabueso commented 6 years ago

Ok, I'm goint to close this issue, was my fault.

For some reason, if you use a wrong password, this error was raised. I was sure that password is correct, but was my mistake.

Would be great to display correctly that user/pass is invalid.

I'im using a Cabotapp version installed trough ansible-cabot role.

Cheers!

JeanFred commented 6 years ago

Glad you got it working @sabueso !

Would be great to display correctly that user/pass is invalid.

Hmmm, I just tried to login with wrong password on my Cabot install, and I do get a « Please enter a correct username and password. Note that both fields may be case-sensitive.»