Funciona com proxy_pass e fastcgi_pass.
Estou executando um serviço da web em Nginx / FastCGI / Django. Nosso tempo de processamento é bastante longo e intensivo da CPU e eu gostaria de poder executar vários processos do Django / FastCGI para compartilhar a carga. Como faço para definir o Nginx para solicitações de roteamento de uma única fonte para várias instâncias do Django / FastCGI? (Eu posso executar várias instâncias em várias portas / soquetes, mas não sei como fazer com que o Nginx compartilhe a carga de processamento entre elas).
Qualquer ajuda muito apreciada.
Funciona com proxy_pass e fastcgi_pass.
Eu percebo que a pergunta é para o fastcgi, mas a maneira mais fácil e rápida de gerar e balancear a carga de um cluster de aplicativos da Web do Python com o nginx é NÃO usar o módulo fastcgi, mas usar o módulo "uWSGI". Exemplo de configuração do nginx:
upstream uwsgicluster {
server 127.0.0.1:9001;
server 192.168.100.101:9001;
server 192.168.100.102:9001;
server 192.168.100.103:9001;
server 192.168.100.104:9001;
}
server {
listen 80;
server_name www.mysite.com mysite.com;
access_log /srv/www/mysite.com/logs/access.log;
error_log /srv/www/msysite.com/logs/error.log;
location / {
include uwsgi_params;
uwsgi_pass uwsgicluster;
}
location /static {
root /srv/www/mysite.com/public_html/static/;
index index.html index.htm;
}
}
O site do uWSGI está aqui projects.unbit.it/uwsgi/ e veja a página de Exemplos incluindo o Django aqui: link
De acordo com o site oficial , você pode gerar o fcgi com o parâmetro:
cd {project_location}
python ./manage.py runfcgi --settings={project}.settings_production maxchildren=10 \
maxspare=5 minspare=2 method=prefork socket={project_location}/log/django.sock pidfile={project_location}/log/django.pid
Ou talvez da mesma forma que o php-fcgi funciona em seu script conf, onde eu tenho (em /etc/init.d/php-fcgi
):
PHP_FCGI_CHILDREN=5