Nginx Reverse proxy config

J’ai des problèmes pour obtenir une configuration simple pour travailler avec nginx. J’ai un serveur qui héberge des conteneurs Docker, donc nginx est dans un conteneur. Alors, appelons l’url foo.com . Je voudrais que l’url foo.com/service1 se rende simplement sur foo.com sur un autre port, donc ça va vraiment tirer foo.com:4321 et foo.com/service2 pour que foo.com:5432 et ainsi de suite sur. Voici la configuration avec laquelle j’ai eu des problèmes.

 http { server { listen 0.0.0.0:80; location /service1/ { proxy_pass http://192.168.0.2:4321/; } location /service2/ { proxy_pass http://192.168.0.2:5432/; } } } 

Donc, les services et nginx vivent à 192.168.0.2. Quelle est la manière préférée de pouvoir le faire? Merci d’avance!

Comme une note de côté, cela s’exécute dans un conteneur de docker. Merci!

Je pense que vous devriez vérifier si votre foo.com pointe vers la bonne adresse IP ou non en supprimant la configuration du proxy inverse. Par exemple

 http { server { listen 80; server_name foo.com; location / { } } } 

Ensuite, si votre adresse ip dispose déjà d’un service s’exécutant sur le port 80, vous devez spécifier le server_name pour chaque service, comme dans mon exemple. Nginx ne peut distinguer que le service auquel répondre par nom de server_name .

* Je suppose que vous avez oublié l’option server_name .

 http { server { listen 80; server_name foo.com; location /service1/ { proxy_pass http://192.168.0.2:4321/; } location /service2/ { proxy_pass http://192.168.0.2:5432/; } } } 

Je suppose que votre problème n’est pas lié à Nginx en tant que tel, mais qu’il est plutôt lié au réseau Docker. Vous avez fourni des informations insuffisantes pour tirer une conclusion détaillée, mais voici quelques suggestions:

  1. exécuter un simple conteneur Docker sur le même hôte que le conteneur nginx est en cours d’exécution et essayer de curl depuis ce conteneur (j’ai vu votre réponse que vous pouvez appeler curl depuis le serveur exécutant Nginx, mais ce n’est pas vraiment pareil)

  2. Par exemple, si le serveur exécutant nginx container est OSX ou Windows, il peut utiliser une machine virtuelle Linux intermédiaire avec sa propre stack réseau, ses adresses IP, son routage, etc.

Ceci est mon envoi à fishfish intérieur. Découvrez l’utilisation de proxy_redirect off & proxy_set_header X-NginX-Proxy true;

  #Glassfish location /MyService/ { index index.html; add_header Access-Control-Allow-Origin $http_origin; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-NginX-Proxy true; proxy_ssl_session_reuse off; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:18000/MyService/; }