3

Fondamentalement, j'ai quelques services. Je veux transmettre toutes les demandes avec le préfixe "/ secure" au port 80 du serveur1 et toutes les autres demandes au port 80 du serveur 2. Le problème est que sur server1, j'exécute le service qui accepte la demande sans le préfixe "/ secure". En d'autres termes, je veux transmettre toutes les demandes telles que "http://example.com/secured/api/getUser" à server1 en tant que "http://example.com/api/getUser" (supprimer/sécurisé du chemin de la demande). Avec AWS ALB, la demande est actuellement envoyée sous la forme http://example.com/secured/api/getUser; ce qui me force à mettre à jour le code de mon server1 afin que le code gère les requêtes avec le préfixe/secure qui ne semble pas bon.Créer une règle AWS Application Load Balancer qui supprime le préfixe de la requête sans utiliser de proxy inverse supplémentaire comme nginx, httpd

Existe-t-il un moyen facile de résoudre cela avec ALB?

Merci.

+2

L'ALB n'est pas assez sophistiqué pour cela. Vous devrez utiliser un proxy inverse pour cela. –

Répondre

1

J'ai eu le même problème, et que Mark a fait remarquer, vous pouvez utiliser proxy inverse sur votre serveur et faire quelque chose comme ça (ce qui est la configuration Nginx):

server { 
    listen 80 default_server; 

    location /secured/ { 
    proxy_pass http://localhost:{service_port}/; 
    } 
} 

Cette dépouillera la/partie sécurisée et proxy tout le reste à votre service. Assurez-vous juste d'avoir le port de service après/après.

0

Je peux confirmer que ce n'est malheureusement pas possible avec le seul ALB - et je suis d'accord que ce devrait être le cas.

états AWS:

Notez que le modèle de chemin est utilisé pour acheminer les demandes mais ne les modifier. Par exemple, si une règle a un modèle de chemin de/img/*, la règle transmet une requête pour /img/picture.jpg au groupe cible spécifié en tant que requête pour /img/picture.jpg.