2016-07-28 26 views
0

Wir haben den WSO2 API Manager 1.10.0 implementiert und funktioniert. Obwohl wir versuchen herauszufinden, ob es möglich ist, mehrere Subdomains dafür zu haben.WSO2 APIM: Subdomains für verschiedene Kontexte

Zum Beispiel:

store.domain.com 
publisher.domain.com 
carbon.domain.com 

Ist das überhaupt möglich? Wir haben dies https://docs.wso2.com/display/Carbon442/Adding+a+Custom+Proxy+Path gesehen, aber dies ist für verschiedene Anwendungen, wir möchten dies nur mit dem API Manager tun.

Vor dem API Manager verwenden wir nginx mit Reverseproxy. Unten finden Sie ein Snippet von nginx, um das Problem zu verstehen.

server { 
    listen 80; 
    server_name store.domain.com; 
    return 301 https://$server_name$request_uri; 
} 

server { 
    listen 443 ssl; 
    ssl on; 
    ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH";#:AES128+EDH"; 
    ssl_protocols TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    add_header Strict-Transport-Security "max-age=63072000"; 

    server_name store.domain.com; 

    ssl_certificate /etc/nginx/ssl/domain.com/self-ssl.crt; 
    ssl_certificate_key /etc/nginx/ssl/domain.com/self-ssl.key; 

    access_log /var/log/nginx/store.log; 
    underscores_in_headers on; 

    location/{ 
     proxy_pass http://wso2server:9443/store/; 
     proxy_redirect off; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-Server $host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

Bei dem Versuch, mit HTTP zuzugreifen (für den Speicher Kontext) alles funktioniert gut, aber sobald wir dies über HTTPS wechseln dies schlägt mit dem folgenden Fehler in nginx upstream prematurely closed connection while reading response header from upstream aber wir sehen nichts in API-Manager Protokolle.

Vielen Dank im Voraus!

Mit freundlichen Grüßen

+1

Sie haben http statt https in „pro xy_pass http: // wso2server: 9443/store/", können Sie es überprüfen. in APIM standardmäßig 9443 ist https – Jenananthan

+0

Dank @Jenananthan haben wir das korrigiert. Obwohl immer noch kein Glück. Es scheint, dass das APIM-Backend die URL nach 'wso2server' umschreibt, was unser Hostname in der 'carbon.xml'-Datei ist. – afgd

+0

erhalten Sie immer noch "Fehler beim Upstream vorzeitig geschlossenen Verbindung beim Lesen der Antwort Header von Upstream"? Haben Sie diesen Blog http://sanjeewamalalgoda.blogspot.com/2014/12/configure-wso2-api-manager-with-reverse.html durchlaufen? – Jenananthan

Antwort

0

Sie können Ihr Problem durch eine der folgenden Methoden lösen.

  1. Hinzufügen von proxy_redirect configs zu Nginx. Also wird nginx alle URLs in die richtige URL umschreiben. Bitte beachten Sie das folgende Konfigurationssegment.
proxy_redirect http://wso2server/ http://store.domain.com/; 
  1. Sie können auch das gleiche durch Hinzufügen von Reverse-Proxy-Konfigurationen in API-Manager-Speicher erreichen. Öffnen Sie dazu "Repository/deployment/server/jaggeryapps/store/site/conf/site.json" und sehen Sie die folgenden Konfigurationsabschnitt

"Reverse Proxy": { "freigegeben": false,// Werte true, false, "auto" - sucht nach X-Forwarded- * Headern "host": "sample.proxydomain.com", // Wenn der Reverse Proxy keinen Domain-Namen hat, benutze IP "context": "", // "regcontext": "" // nur wenn anderer Pfad für Registry verwendet wird },