1

J'ai un site Web qui utilise Cloudflare pour protéger et proxy le site. J'utilise un certificat SSL Cloudflare sur mon serveur d'origine nginx pour que toutes les demandes soient traitées via HTTPS et que cela fonctionne selon les besoins.Nginx reverse proxy vers le serveur de l'application Jetty via Cloudflare

J'ai configuré un serveur Node.js et un serveur d'applications basé sur Jetty exécutant Xwiki sur le même serveur physique que celui hébergeant mon serveur web Nginx.

Je configure nginx reverse proxing via mon fichier nginx.conf afin que nginx pointe vers le serveur 'application' respectif lorsque l'URL correspondante est demandée, par ex.

https://SITE-ROOT/node 

Ce proxy inverse à mon Node.js serveur exécutant sur le port 3001 sur l'hôte local en utilisant les paramètres d'emplacement ci-dessous dans mon fichier nginx.conf ...

location /node { 
      proxy_pass   http://192.168.1.69:3001; 
      proxy_redirect  off; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-Forwarded-Host $server_name; 
      } 

Cela fonctionne selon les besoins et la La page node.js est diffusée via HTTPS via l'URL pubic de mon site et via le service CloudFlares.

Lorsque j'essaie de faire la même chose pour le site Xwiki qui s'exécute sur le serveur d'applications Jetty (Java) sur l'hôte local sur le port 8080, par exemple.

https://SITE-ROOT/xwiki 

location /xwiki/ { 
      proxy_pass   http://192.168.1.69:8080/xwiki; 
      proxy_redirect  off; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-Forwarded-Host $server_name; 
      } 

Je reçois l'erreur suivante:

DNS points to prohibited IP 

Unfortunately, it is resolving to an IP address that 
is creating a conflict within Cloudflare's system. 

Je ne comprends pas pourquoi cela se passe comme j'attendre la même chose se produise à la demande de proxy inverse nœud. La seule différence que je peux penser est que Xwiki tourne dans le serveur d'application de Jetty sur le même hôte que les services de nginx et de noeud et ceci signifie que nginx et Jetty ne sont pas/ne peuvent pas communiquer de la même manière nginx et node peuvent quand il s'agit de proxing inverse ...

Si je mets mes sites adresse IP réelle et le numéro de port Xwiki dans la section de redirection de proxy de mon fichier nginx.conf, par exemple

https://SITE-ROOT/xwiki 

location /xwiki/ { 
      proxy_pass   http://EXTERNAL-REAL-IP:8080/xwiki; 
      proxy_redirect  off; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-Forwarded-Host $server_name; 
      } 

Cela fonctionne en autant que la page se charge par défaut XWiki mais l'URL change au réel IP externe de mon serveur et ne pas utiliser SSL. Je comprends que c'est parce que le serveur Jetty sert la page via le port 8080 et en passant nginx tout à fait. Donc, ma vraie question est, comment puis-je obtenir le service Xwiki basé sur Jetty à charger sur un emplacement dans mon site proxyx Cloudflare utilisant Nginx proxy inverse ou pouvez-vous m'aider à comprendre où je vais ...

Je pense que je dois installer le certificat SSL est installé sur mon serveur nginx sur le serveur de la jetée aussi pour que nginx voir est le serveur Jetty comme ressource locale - mais je suis très incertain sur ce ...

Répondre

1

comme J'ai mentionné dans ma question initiale, je m'attendais à la xwiki redirect/proxy pour fonctionner de la même manière que la redirection de nœud a travaillé ...

Je me grattais la tête et je me demandais pourquoi cela ne fonctionnait pas alors j'ai eu une pièce de théâtre ...

Je trouve qu'il peut y avoir eu un problème avec elles comme je transmettait la demande j'ai enlevé si la ligne ci-dessous

proxy_set_header X-Forwarded-Host $server_name; 

et remplacé par:

proxy_set_header  X-Forwarded-Proto https; 

de sorte que Nginx serait prendre soin du site SSL des choses

location /test { 
      proxy_pass    EXTERNAL-REAL-IP:8080/; 
      proxy_set_header  X-Real-IP $remote_addr; 
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header  X-Forwarded-Proto https; 
      proxy_set_header  Host $http_host; 
         } 

J'ai créé un nouvel emplacement 'test' dans mon nginx co fichier nfig comme ci-dessus et l'a pointé vers l'IP externe et le port 8080 que Jetty fonctionne ... et boom, j'ai une page d'erreur Jetty sur mon https://SITE-NAME/test `url dire que l'emplacement 'test' n'a pas été trouvé, ce qui signifie que le proxy inverse nginx fonctionnait selon les besoins ...

Bien que je n'ai peut-être pas eu besoin de le faire si j'avais dû renommer le paramètre de localisation dans le fichier nginx.conf, j'ai trouvé en lisant la documentation de Jetty que Je pourrais changer l'URL que l'application basée sur la guerre lancerait sur Jetty en renommant le fichier war dans le répertoire webapp de Jetty home.

J'ai changé le nom du fichier de la guerre de XWiki pour tester et redémarrés Jetty et chargé mon https://SITE-NAME/test dans mon navigateur ...

Hey-presto, mon site servait maintenant l'application Xwiki approximé de la jetée via nginx via HTTPS sur mon https://SITE-NAME/test url ...

J'ai changé le nom du fichier war et l'emplacement dans le fichier nginx pour pointer vers quelque chose comme https://SITE-NAME/test et cela fonctionne comme un charme!

J'ai alors changé l'emplacement https://EXTERNAL-REAL-IP/test à nginx.conf d'utiliser le réseau local nginx IP afin que Nginx serait proxy localement et cela encore travaillé au besoin - donc, dans l'ensemble, des jours heureux ...