Problem with nginx + uwsgi

Hi everybody,

I’m having a problem with my nginx and uwsgi. I don’t really know
what
I’m doing wrong.

Here is the configuration of nginx:

server {
listen 80;

    location /api/v1 {
            uwsgi_pass      unix:///tmp/api.sock;
            include         uwsgi_params;
    }

    location / {
            return 444;
    }

And this is uwsgi configuration:

[uwsgi]
socket = /tmp/api.sock
chdir = /var/www/api
master = true
plugin = python
pp = /home/api/src
file = uwsgi.py
uid = www-data
gid = www-data
threads = 4
workers = 4
callable = app
chmod-socket = 666
post-buffering = 4096
virtualenv = /usr/local/venvs/api
callable = ins
env = API_SETTINGS_FILE=…/…/etc/settings.py

If I execute following command everything seems to be working fine:

curl -v http://127.0.0.1/api/v1/login

{
“message”: “Method Not Allowed”,
“status”: 405
}

HTTP/405 it’s the expected answer since the app doesn’t allow login
resquets with GET method, So now I’m going to try with POST.

The application expects for data such as email and password, so this
should
trigger a 500 in the api backend

curl http://10.10.10.35/api/v1/login -X POST

uwsgi log:

[pid: 19484|app: 0|req: 5/5] 127.0.0.1 () {30 vars in 340 bytes} [Fri
Jul
17 12:05:00 2015] POST /api/v1/login => generated 0 bytes in 432 msecs
(HTTP/1.1 500) 0 headers in 0 bytes (0 switches on core 0)

Everything good but the answer of nginx it’s wrong:

502 Bad Gateway

502 Bad Gateway


nginx/1.7.1

So for any reason nginx interpret the HTTP/500 from the API as the
gateway
it’s no available.

Do you see what I’m doing wrong?

More info:

Nginx 1.8.0
Ubuntu 12.04
uWSGI 1.0.3

Thanks in advance

On Friday 17 July 2015 09:09:22 Guido wrote:

    location /api/v1 {

[uwsgi]
callable = app
{
curl http://10.10.10.35/api/v1/login -X POST

uwsgi log:

[pid: 19484|app: 0|req: 5/5] 127.0.0.1 () {30 vars in 340 bytes} [Fri Jul
17 12:05:00 2015] POST /api/v1/login => generated 0 bytes in 432 msecs
(HTTP/1.1 500) 0 headers in 0 bytes (0 switches on core 0)
[…]

You should look what exactly is returned from your backend.
From the log above it looks like it returns nothing.

To shed some light you can enable the debug log in nginx:
http://nginx.org/en/docs/debugging_log.html

wbr, Valentin V. Bartenev