Eu tenho um aplicativo Django dentro de um arquivo que usa uwsgi. Como temos vários Dockers rodando em máquinas diferentes, temos o haproxy como balanceador de carga.
Minha pergunta é: devo usar uwsgi com http
ou http-socket
?
A partir daqui https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html
Parecehttp
A opção http-socket fará com que o uWSGI fale HTTP nativamente. Se o seu servidor web não suporta o protocolo uwsgi, mas é capaz de se comunicar com proxies HTTP upstream, ou se você estiver usando um serviço como Webfaction ou Heroku para hospedar seu aplicativo, você pode usar o soquete http. Se você planeja expor seu aplicativo ao mundo apenas com uWSGI, use a opção http, pois o roteador/proxy/balanceador de carga será seu escudo.
A última parte sugere o http
que fazer se houver um balanceador de carga
Mas aqui https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
As opções de soquete http e http são feras totalmente diferentes. O primeiro gera um processo adicional que encaminha solicitações para uma série de trabalhadores (pense nisso como uma forma de escudo, no mesmo nível do Apache ou nginx), enquanto o segundo define os trabalhadores para falarem nativamente o protocolo http. TL/DR: se você planeja expor o uWSGI diretamente ao público, use --http, se quiser fazer proxy atrás de um servidor web falando http com backends, use --http-socket.
Parece inferir que http-socket
se não for exposto diretamente ao público
Então, qual é a maneira de fazer isso com o haproxy?
haproxy
não suportauWSGI
diretamente. Você precisa usarhttp-socket
. Você também pode ativar o suporte aoPROXY
protocolo para--http-enable-proxy-protocol
preservar o endereço IP de um cliente.