GNU/Linux >> Tutoriels Linux >  >> Linux

Configurer WSO2 avec le proxy inverse NGINX pour les URL personnalisées

Par défaut, les interfaces WSO2 telles que Publisher, Developer portal et Carbon sont accessibles via le port :9443/publisher, :9443/devportal et :9443/carbon respectivement. Mais je ne suggère pas d'offrir des points de terminaison avec des numéros de port au client pour de bonnes raisons. Donc, si vous êtes comme moi et que vous souhaitez configurer des chemins de proxy personnalisés tels que https://hostname.com/publisher, etc., vous devez disposer d'un serveur proxy devant le gestionnaire d'API WSO2. Dans ce didacticiel, nous allons configurer WSO2 avec le proxy inverse NGINX pour mapper une URL proxy avec l'URL réelle des services WSO2 permettant aux clients d'accéder aux services avec l'URL proxy.

Considérez un scénario dans lequel vous vouliez héberger des services WSO2 tels que l'éditeur, le portail des développeurs et la console carbone comme :

https://tg.com/apim/publisher
https://tg.com/apim/devportal
https://tg.com/apim/carbon
https://tg.com/apim/admin

Dans les URL ci-dessus, 'apim ‘ est le chemin de contexte du proxy du gestionnaire d'API.

Comment configurer WSO2 avec NGINX Reverse Proxy

Si vous configurez WSO2 pour la première fois, passez à cet article pour connaître les étapes d'installation.

Installer le serveur NGINX

Étape 1 : Installez le serveur NGINX en exécutant la commande suivante

sudo apt-get install nginx

Étape 2 : Configurer le certificat SSL. Vous pouvez soit configurer un certificat auto-signé pour le serveur de développement, soit en obtenir un auprès de LetsEncrypt pour le serveur de production.

Étape 3  :Créez un nouveau fichier de configuration NGINX dans /etc/nginx/conf.d/wso2.conf et copiez-collez le texte ci-dessous.

server {
listen 443 ssl default_server;
listen [::]:443 default_server ipv6only=on;
server_name tg.com www.tg.com;
root /var/www/html;
access_log /var/log/nginx/proxy.log;


ssl_certificate /etc/letsencrypt/live/tg.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/tg.com/privkey.pem; #

ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

rewrite \w*(carbon|admin|devportal|publisher|oidc)$ $1/ permanent;

location /apim/ { 
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_read_timeout 5m;
proxy_send_timeout 5m;

proxy_pass https://tg.com:9443/;
proxy_redirect https://tg.com/authenticationendpoint/ https://tg.com/apim/authenticationendpoint/;
proxy_redirect https://tg.com/oauth2/ https://tg.com/apim/oauth2/;
proxy_redirect https://tg.com/carbon/ https://tg.com/apim/carbon/;
#proxy_redirect https://tg.com/admin/ https://tg.com/apim/admin/;


proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";


}
location /api/ {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_read_timeout 5m;
proxy_send_timeout 5m;

proxy_pass https://tg.com:8243/;
proxy_redirect https://tg.com:8243/(.*) https://tg.com/api/$1;

}

location /carbon/admin/js/csrfPrevention.js {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_read_timeout 5m;
proxy_send_timeout 5m;
proxy_pass https://tg.com/apim/carbon/admin/js/csrfPrevention.js;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

location /api/am/publisher/v2 {
index index.html;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://tg.com:9443/api/am/publisher/v2;
proxy_redirect https://tg.com:9443/api/am/publisher/v2 https://tg.com/apim/api/am/publisher/v2;
}
location /api/am/admin/v2 {
index index.html;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://tg.com:9443/api/am/admin/v2;
proxy_redirect https://tg.com:9443/api/am/admin/v2 https://tg.com/apim/api/am/admin/v2;
}
location /api/am/devportal/v2 {
index index.html;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://tg.com:9443/api/am/devportal/v2;
proxy_redirect https://tg.com:9443/api/am/devportal/v2 https://tg.com/apim/api/am/devportal/v2;
}

location /oidc {
index index.html;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://tg.com:9443/oidc;
proxy_redirect https://tg.com:9443/oidc https://tg.com/apim/oidc;
}
location /authenticationendpoint{
index index.html;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://tg.com:9443/authenticationendpoint;
proxy_redirect https://tg.com:9443/authenticationendpoint https://tg.com/apim/authenticationendpoint;
}

location /oauth2 {
index index.html;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://tg.com:9443/oauth2;
proxy_redirect https://tg.com:9443/oauth2 https://tg.com/apim/oauth2;
proxy_redirect https://tg.com:9443/authenticationendpoint https://tg.com/apim/authenticationendpoint;
proxy_redirect https://tg.com:9443/devportal https://tg.com/apim/devportal;
proxy_redirect https://tg.com:9443/publisher https://tg.com/apim/publisher;
}
location /logincontext{
index index.html;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://tg.com:9443/logincontext;
proxy_redirect https://tg.com:9443/logincontext https://tg.com/apim/logincontext;
}
location /commonauth{
index index.html;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://tg.com:9443/commonauth;
proxy_redirect https://tg.com:9443/commonauth https://tg.com/apim/commonauth;
}

location /api/am/service-catalog/v0{
index index.html;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://tg.com:9443/api/am/service-catalog/v0;
proxy_redirect https://tg.com:9443/api/am/service-catalog/v0 https://tg.com/apim/api/am/service-catalog/v0;
}
location /uansandbox{
index index.html;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://tg.com:8443/uansandbox;
proxy_redirect https://tg.com:8443/uansandbox https://tg.com/uansandbox;
}
location /uansandbox/uploadtoken{
index index.html;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://tg.com:8443/uansandbox/uploadtoken;
proxy_redirect https://tg.com:8443/uansandbox/uploadtoken https://tg.com/uansandbox/uploadtoken;
}

}

Étape 4 : Enregistrez le fichier et exécutez la commande ci-dessous pour vous assurer que la configuration est sans erreur.

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Étape 5 : Redémarrez le serveur NGINX

# systemctl restart nginx

Mettre à jour les configurations du gestionnaire d'API

Étape 6 : Ajoutez les entrées d'hôte suivantes

127.0.0.1 tg.com

Étape 7 : Mettez à jour le fichier de configuration de déploiement comme ci-dessous et ajoutez ou mettez à jour avec les configurations suivantes.

# vim <API_M>/repository/conf/deployment.toml
[server]
hostname = "tg.com"
base_path = "${carbon.protocol}://${carbon.host}:${carbon.management.port}/apim"
server_role = "default"
node_ip = "127.0.0.1"
mode = "single" #single or ha
proxy_context_path = "/apim"
[apim.devportal]
url = "https://tg.com/apim/devportal"
[transport.https.properties]
proxyPort = 443

Remarque : N'oubliez pas de changer le nom d'hôte, base_path avec le suffixe de "/apim ' et proxy_context_path qui est '/apim ‘.

Étape 7 : Mettre à jour web.xml.j2 fichier situé dans '//repository/resources/conf/templates/repository/conf/tomcat/carbon/WEB-INF/web.xml.j2

Et ajoutez la configuration ci-dessous au même niveau de <context-param> nœuds.

<context-param>
<param-name>contextPath</param-name>
<param-value>apim</param-value>
</context-param>

Étape 8 : Mettez à jour les fichiers de configuration Web sous app :{ }

#vim /repository/deployment/server/jaggeryapps/publisher/site/public/conf/settings.js

context: '/apim/publisher', // Note the leading `/` and no trailing `/`
proxy_context_path: '/apim',
customUrl: { // Dynamically set the redirect origin according to the forwardedHeader host|proxyPort combination
enabled: true,
forwardedHeader: 'X-Forwarded-Host',
},

#vim /repository/deployment/server/jaggeryapps/devportal/site/public/theme/settings.js

context: '/apim/devportal',
proxy_context_path: '/apim',
customUrl: {
enabled: true,
forwardedHeader: 'X-Forwarded-Host',
},

#vim /repository/deployment/server/jaggeryapps/admin/site/public/conf/settings.js

context: '/apim/admin', // Note the leading `/` and no trailing `/`
proxy_context_path: '/apim',
customUrl: { // Dynamically set the redirect origin according to the forwardedHeader host|proxyPort combination
enabled: true,
forwardedHeader: 'X-Forwarded-Host',
},

Étape 9 : Redémarrez le gestionnaire d'API WSO2

#<API_M/bin/api-manager -restart

C'est ça! Maintenant, allez-y et accédez à tous les services WSO2 via les URL de proxy personnalisées.

Références :

  • Configurer WSO2 avec le proxy inverse NGINX
  • Raison de l'ajout du paramètre X-Forwarded-For-header.
  • Problèmes avec le proxy inverse pour DevPortal et Publisher

Linux
  1. Proxy inverse avec Nginx :un guide de configuration étape par étape

  2. Linux :Différence entre /dev/console , /dev/tty et /dev/tty0 ?

  3. Bash =~ Regex et Https://regex101.com/?

  4. Authentification Proxy Avec Terminal Ubuntu 14.04 ?

  5. Django static_root dans /var/www/... - aucune autorisation pour collectstatic

Les paramètres proxy ne vous aident pas avec le gestionnaire de mise à jour ?

Comment configurer Nginx en tant que proxy inverse pour Apache sur Ubuntu 18.04 VPS

Installer les binaires dans /bin, /sbin, /usr/bin et /usr/sbin, interactions avec --prefix et DESTDIR

Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

unix:///var/run/supervisor.sock aucun fichier de ce type

Les sites Web doivent-ils vivre dans /var/ ou /usr/ selon l'utilisation recommandée ?