Nginx, Squid, CorsProxy - Quelle solution préférer pour l'hébergement d'un proxy-cache et d'un proxy classique simples et légers?

Bonsoir,

J’aimerais héberger un serveur proxy sur une instance YNH (v.11.1.18) installée sur un VPS pour 2 cas d’usage:

  1. Proxy-Cache : pour mettre en cache les images présentes dans les flux RSS des comptes de l’instance FreshRSS du serveur. Ce qui peut a priori fait en adaptant un modèle de config Nginx de ce type:

     # Use 1 GiB cache with a 1 MiB memory zone (enough for ~8,000 keys).
     # Delete data that has not been accessed for 12 hours.
     proxy_cache_path /var/cache/nginx/freshrss levels=1:2 keys_zone=freshrss:1m
                      max_size=1g inactive=12h use_temp_path=off;
    
     server {
    
     …
    
         location /proxy {
             if ($arg_key = "changeme") {
                 proxy_pass $arg_url;
             }
             # Handle redirects coming from the target server.
             proxy_redirect ~^(.*)$ https://www.example.org/proxy?key=$arg_key&url=$1;
             proxy_ssl_server_name on;
             proxy_cache freshrss;
             # Cache positive answers for up to 2 days.
             proxy_cache_valid 200 301 302 307 308 2d;
         }
    
     …
    
     }
    
  2. Proxy classique : permettre à des périphériques sur lesquels il n’est pas possible d’installer un client VPN de se connecter à internet (tous types de sites) via un proxy hébergé sur l’instance YNH.

J’ai fait pour le cas d’usage 2. un bref essai avec Squid (en configurant les périphériques avec une adresse de type user:password@address:port), qui semble marcher plutôt bien dès l’installation. Mais je ne pense pas avoir vraiment besoin de Squid, si YNH inclut déjà Nginx. Je note aussi l’existence de la solution Cors Proxy dans le catalogue YNH dont je ne mesure pas encore l’intérêt éventuel pour mon cas.
Pour faire au plus léger, sachant que les usages mentionnés ne nécessitent pas a priori de fonctionnalités avancées, ai-je plutôt intérêt à

  • créer deux app dédiées (Proxy-cache et Simple-Proxy) chacune consistant essentiellement en une configuration Nginx spécifique ?
  • Utiliser Squid ou Cors Proxy ?
1 Like

Il semble que les deux cas d’utilisation que vous décrivez (proxy-cache et proxy classique) ne nécessitent pas de fonctionnalités avancées, donc pour faire au plus léger, vous pourriez créer deux applications dédiées (Proxy-cache et Simple-Proxy) chacune consistant essentiellement en une configuration Nginx spécifique.

Cependant, si vous avez déjà utilisé Squid et qu’il semble bien fonctionner pour votre deuxième cas d’utilisation, vous pourriez continuer à l’utiliser. Cors Proxy pourrait également être une option à considérer, mais vous devrez évaluer si cela convient à vos besoins spécifiques.

En fin de compte, la décision dépend de vos préférences et de ce qui fonctionne le mieux pour vous en termes de facilité d’utilisation, de performance et de sécurité.

Merci pour votre réponse. Toutefois, elle ne m’aide pas vraiment à trancher alors que je n’ai jusqu’à présent jamais vraiment utilisés ce type de proxys :slight_smile: .

  • Pour la sécurité je ne sais pas évaluer, si ce n’est que je note que Cors-Proxy n’est pas intégré à SSO / LDAP et doit pour fonctionner nécessairement être rendu public, ce qui n’est peut-être pas l’idéal pour mon serveur peu puissant. En même temps je suppose que je dois pouvoir au besoin ajouter un mot de passe dans sa config Nginx.
  • Pour la légèreté, je suppose qu’il faut partir sur des configurations Nginx spécifiques
  • Pour la performance, je vois dans la description de Cors-Proxy que ce dernier permet de transmettre les cookies. Et qu’il peut gérer les sites en Javascript si l’on installe le moteur Chromium. Je pense à mon deuxième cas d’utilisation: est-ce à dire que Nginx ou Squid fonctionneront mal avec un certain nombre de sites web ?

Bref, idéalement j’aimerai utiliser Nginx pour question de légèreté et de sécurité relative (réduction de la surface d’attaque), mais il faut que le proxy fonctionne avec tous les sites (ou presque) pour le cas 2.

Quant au cas 1, peut-être même pourrais-je ajouter la configuration Nginx directement dans FreshRSS (puisque c’est pour le moment la seule application qui en a besoin), en ajoutant à la suite de la configuration existante, une entrée de type location __PATH__-cache/ {} qui contiendrait l’extrait de code présenté dans mon premier message?