GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Richten Sie WSO2 mit NGINX Reverse Proxy für benutzerdefinierte URLs ein

Standardmäßig erfolgt der Zugriff auf WSO2-Schnittstellen wie Publisher, Developer Portal und Carbon über Port :9443/publisher, :9443/devportal bzw. :9443/carbon. Aber ich schlage nicht vor, dem Kunden aus guten Gründen Endpunkte mit Portnummern anzubieten. Wenn Sie also wie ich benutzerdefinierte Proxy-Pfade wie https://hostname.com/publisher usw. einrichten möchten, benötigen Sie einen Proxy-Server als Front-End für den WSO2-API-Manager. In diesem Tutorial richten wir WSO2 mit NGINX-Reverse-Proxy ein, um eine Proxy-URL der tatsächlichen URL der WSO2-Dienste zuzuordnen, sodass die Clients mit der Proxy-URL auf die Dienste zugreifen können.

Stellen Sie sich ein Szenario vor, in dem Sie WSO2-Dienste wie Herausgeber, Entwicklerportal und Kohlenstoffkonsole wie folgt hosten möchten:

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

In den obigen URLs ist „apim ‘ ist der Proxy-Kontextpfad des API-Managers.

So richten Sie WSO2 mit NGINX Reverse Proxy ein

Wenn Sie WSO2 zum ersten Mal einrichten, finden Sie die Installationsschritte in diesem Artikel.

NGINX-Server installieren

Schritt 1: Installieren Sie den NGINX-Server, indem Sie den folgenden Befehl ausführen

sudo apt-get install nginx

Schritt 2: SSL-Zertifikat einrichten. Sie können entweder ein selbstsigniertes Zertifikat für den Entwicklungsserver einrichten oder eines von LetsEncrypt für den Produktionsserver erhalten.

Schritt 3 :Erstellen Sie eine neue NGINX-Konfigurationsdatei in /etc/nginx/conf.d/wso2.conf und kopieren Sie den folgenden Text und fügen Sie ihn ein.

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;
}

}

Schritt 4: Speichern Sie die Datei und führen Sie den folgenden Befehl aus, um sicherzustellen, dass die Konfiguration fehlerfrei ist.

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

Schritt 5: Starten Sie den NGINX-Server neu

# systemctl restart nginx

API-Manager-Konfigurationen aktualisieren

Schritt 6: Fügen Sie die folgenden Hosteinträge hinzu

127.0.0.1 tg.com

Schritt 7: Aktualisieren Sie die Bereitstellungskonfigurationsdatei wie unten und fügen Sie die folgenden Konfigurationen hinzu oder aktualisieren Sie sie.

# 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

Hinweis: Denken Sie daran, den Hostnamen base_path mit dem Suffix „/apim“ zu ändern ‘ und proxy_context_path, also ‘/apim ‘.

Schritt 7: Aktualisieren Sie web.xml.j2 Datei, die sich unter „//repository/resources/conf/templates/repository/conf/tomcat/carbon/WEB-INF/web.xml.j2“ befindet ‘

Und fügen Sie die folgende Konfiguration auf derselben Ebene von <context-param> hinzu Knoten.

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

Schritt 8: Aktualisieren Sie die Webkonfigurationsdateien unter 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',
},

Schritt 9: Starten Sie den WSO2 API Manager neu

#<API_M/bin/api-manager -restart

Das ist es! Fahren Sie jetzt fort und greifen Sie über die benutzerdefinierten Proxy-URLs auf alle WSO2-Dienste zu.

Referenzen:

  • WSO2 mit NGINX Reverse Proxy einrichten
  • Grund für das Hinzufügen der X-Forwarded-For-Header-Einstellung.
  • Probleme mit Reverse-Proxy für DevPortal und Publisher.

Linux
  1. Reverse Proxy mit Nginx:Eine Schritt-für-Schritt-Anleitung zur Einrichtung

  2. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  3. Debian – /var, /home auf separate Partition verschieben?

  4. Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

  5. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

So richten Sie Nginx als Reverse Proxy für Apache auf Ubuntu 18.04 VPS ein

Warum andere Dinge als /home auf eine separate Partition legen?

So richten Sie passwortloses SSH mit RSA-Schlüsseln ein

echo oder print /dev/stdin /dev/stdout /dev/stderr

Warum sind < oder > erforderlich, um /dev/tcp

So richten Sie /etc/issues ein, um die IP-Adresse für eth0 anzuzeigen