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 '
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
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
context: '/apim/devportal', proxy_context_path: '/apim', customUrl: { enabled: true, forwardedHeader: 'X-Forwarded-Host', },
#vim
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