Devrait Nginx être devant l'HAPROxy ou le contraire?

J'ai peu d'expérience dans la design d'architecture d'infrastructure de site web. Je sais que cela pourrait être spécifique à la situation. Le site Web est censé:

1) Besoin de support HTTPS pour certaines pages (p. Ex. Page de connection) alors que d'autres sont simplement une page HTTP.

2) Besoin de plusieurs servers Web afin d'effectuer un certain équilibrage de charge.

3) Besoin de caching HTTP et de compression pour augmenter les performances.

4) Certaines requêtes (p. Ex. Téléchargement d'image) doivent être apathées vers des servers backend dédiés. Ainsi, un équilibrage basé sur les URL est requirejs.

Je sais que NginX et HAProxy sont à la fois généreux Reverse Proxy et / ou Load Balancer. Étant donné que HAProxy ne prend pas en charge SSL, alors que l'équilibrage de charge Nginx n'est pas aussi bon que HAProxy. Je vais prendre les deux.

Donc, devrais-je mettre Nginx (en tant que proxy inverse) à l'avant de HAPROxy (en tant que chargeur d'équilibrage) ou contraire?

Merci

Si vous prévoyez que chaque server Web soit disponible sur HTTPS, vous devrez installer Nginx devant HAProxy. Avec cette configuration, votre Nginx prend en charge tous les travaux SSL et envoie le trafic HTTP déchiffré directement sur le front de page HAPROxy, qui va alors charger des requests de paiement vers vos servers Web en fonction des règles que vous spécifiez.

L'idée d'utiliser LVS, comme mentionné par womble, est qu'il est un peu less intrusif puisqu'il ne tient pas une connection entre votre server Web et le client qui accède au site. D'autre part, LVS ne vous fournira un équilibrage de charge simple et ne vous permettra pas de transférer des requêtes en fonction de l'extension de file, de l'URL demandée, des en-têtes, etc. C'est pourquoi HAProxy est utilisé dans de nombreuses situations.

Si vous avez besoin de SSL sur un server (sans équilibrage de charge), vous pouvez utiliser HAPROxy pour tout sans utiliser Nginx. D'autre part, vous aurez un problème à ne pas pouvoir voir l'adresse IP source du client dans les journaux HTTPS du server Web (car HAProxy réécrit cette adresse). L'IP sera dans les journaux HAProxy si vous l'activez;)

Vous devriez simplement utiliser nginx, il fait tout ce dont vous avez besoin en tant que server web frontal. Si vous avez besoin d'un équilibrage de charge avant, utilisez un équilibreur de charge L3 tel que Linux Virtual Server , car cela n'empêche pas HAproxy. Utilisez HAproxy si nécessaire pour faire un équilibrage de charge en arrière-scène, comme l'équilibrage des requêtes auprès d'un pool de travailleurs backend.

Je ne peux pas find d'informations depuis quand, mais à partir d'août 2016, haproxy prend en charge SSL comme un charme, y compris SNI.

Par conséquent, je mettrai haproxy devant Nginx.