Nginx timeouts when uWSGI takes long to process request

社会主义新天地 提交于 2019-12-02 17:27:25
anishek

The configuration that solves the problem is:

location / {
    include uwsgi_params;
    uwsgi_pass   127.0.0.1:9001;
    uwsgi_read_timeout 300;
    index  index.html index.htm;
}

The reason the above configuration in the question did not work for us because unfortunately in our machine multiple paths had nginx.conf file. We were working with the conf at the wrong path.

To correctly figure out which path your nginx is picking up the configuration from run:

nginx -V  # V is caps

this will have a --conf-path=[] which will tell you exactly from where it is picking up the configuration from.

I recently found the above nginx -V to not give the right info. I will leave the above just in case others find it useful.

In addition to the "uwsgi_read_timeout" answer, you should also check that ownership is correct for your nginx uwsgi cache directory. Ownership must be set to the same user as the running nginx process... In my case I had to do this

grep '^user' /etc/nginx/nginx.conf
ls -lah /var/cache/nginx/uwsgi_temp
for f in $( find /var/cache/nginx/uwsgi_temp ); do ls -lah $f; done

Are these files owned by the same user? If not, you could shut down nginx and remove all the cache files, make sure that the proper owner is on /var/cache/nginx/uwsgi_temp and restart. Maybe you could also just do a recursive chown, I didn't test this approach.

# store the user
THEUSER=$(grep '^user' /etc/nginx/nginx.conf | sed 's/.* //; s/;.*//' )

Remove cache and restart approach

/etc/init.d/nginx stop
rm -rf /var/cache/nginx/uwsgi_temp/* 
chown $THEUSER:$THEUSER /var/cache/nginx/uwsgi_temp
/etc/init.d/nginx start

Recursive chown approach

chown -R $THEUSER:$THEGROUP /var/cache/nginx/uwsgi_temp/
# not sure if you have to restart nginx here... 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!