Maison  >  Article  >  développement back-end  >  gondola : Pourquoi ne pas utiliser un proxy inverse léger et simple basé sur YAML ?

gondola : Pourquoi ne pas utiliser un proxy inverse léger et simple basé sur YAML ?

王林
王林original
2024-08-12 06:08:07928parcourir

gondola: Why not use a lightweight and simple YAML-based reverse proxy?

Qu'est-ce qu'une gondole ?

gondola est un proxy inverse créé par Go et facile à utiliser en écrivant simplement un fichier de configuration en YAML.

On peut le trouver chez Awesome-go.

Il est implémenté en utilisant uniquement les bibliothèques standard de Go et possède les fonctionnalités suivantes

  • Hôte virtuel
    • Vous pouvez configurer plusieurs hôtes sur des serveurs en amont.
  • Chargeur de fichiers de configuration
    • Vous pouvez utiliser des fichiers de configuration au format YAML.
  • TLS
    • Vous pouvez utiliser TLS en préparant un certificat TLS.
  • Servir des fichiers statiques
    • Vous pouvez servir des fichiers statiques.
  • Journal d'accès
    • Sortie des journaux d'accès au proxy et des journaux d'accès aux serveurs en amont.
  • Distribution binaire
    • Distribution de binaires compilés de manière croisée.

Motivation

Je gère un blog appelé bmf-tech.com, que j'ai moi-même créé dans Go.

Le blog avait un proxy inverse construit à l'aide de Nginx.

L'architecture de mon système de blog n'est pas complexe, et j'ai pensé qu'un proxy inverse pouvant fonctionner avec une configuration plus simple serait suffisant.

J'ai donc décidé de créer mon propre proxy inverse qui peut être configuré avec un fichier de configuration plus simple plutôt qu'un fichier de configuration avec une syntaxe flexible comme Nginx.

J'utilise actuellement Gondola dans mon propre système de blog, et jusqu'à présent, il est simple et facile à exécuter.

Comment utiliser la télécabine

Vous pouvez utiliser Gondola en utilisant la commande go get ou en téléchargeant Binary.

go get -u github.com/bmf-san/gondola

Le binaire est disponible à partir des versions.

Les images Docker sont également disponibles sur bmf-san/gondola.

Une fois le serveur proxy (gondola) et le serveur amont configurés dans le fichier de configuration, démarrez simplement gondola.

# example config.yaml
proxy: (default)
  port: 443
  read_header_timeout: 2000
  shutdown_timeout: 3000
  tls_cert_path: certificates/cert.pem
  tls_key_path: certificates/key.pem
  static_files: /public/static_files
    - path: /public/
      dir: . /public
upstreams: host_name: backend1.local
  - host_name: backend1.local
    target: http://backend1:8081 # backend1 is the name of the container
  - host_name: backend2.local
    target: http://backend2:8082 # backend2 is the name of the container
log_level: 0 # Debug:-4 Info:0 Warn:4 Error:8

Démarrez la télécabine comme suit :

gondola -config config.yaml

Nous avons également des _exemples que vous pouvez essayer tout de suite si vous le souhaitez.

Implémentation d'un proxy inverse dans Go

Pour une implémentation de proxy inverse dans Go, voir Implémenter un équilibreur de charge dans Golang.

Cet article explique comment implémenter un équilibreur de charge, mais comme il est basé sur une implémentation de proxy inverse, il peut être utile.

Contribution

la gondole accueille les problèmes et les demandes de tirage.

Bien sûr, Star est également la bienvenue.

Il nous manque encore certaines fonctionnalités et la mise en œuvre de la gondole, nous aimerions donc continuer à l'améliorer.

  • Arrêt progressif
  • Vérification de l'état du serveur en amont
  • Rechargement du fichier de configuration
  • Optimisation des coûts de communication
  • Équilibrage de charge
  • Autres ajustements de mise en œuvre pour l'évolutivité

N'hésitez pas à nous faire part de vos commentaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn