2016-02-01 15 views
5

zuordnen Lange Geschichte kurz: Wir haben Remote-Dev-Server. Das enthält mehrere Symfony2-Instanzen. Wie example.com/page1 und example.com/page2 sind verschiedene AWS-Instanzen mit unterschiedlichen Anwendungen. Einer von diesen (d. H. /page1) ist meine Verantwortung. Und ich kann es aus der Ferne und lokal entwickeln. Offensichtlich ist lokal der schnellste Weg, aber es gibt eine Reihe von Gründen, warum es besser ist, remote zu entwickeln, wenn ganze Anwendungen gleichzeitig unter einer ähnlichen Domäne arbeiten. Also möchte ich example.com/page1 auf meine lokale Instanz verweisen, also sende ich keine Dateien per FTP jeden Cmd + S.Kann ich einige genaue Remote-URL auf die lokale mit anderen Port

Von Apache Einstellungen kann ich einige lokale URL zum Remote einer Karte, mit Proxypass

ProxyPass /app/ http://example.com/app/

zu tun, was ich brauche, ist genau die gleiche, aber umgekehrt.

Ich habe zwei gleiche Web-Anwendungen, die remote und lokal ausgeführt werden.

Fern: https://example.com:33333/app/

Lokale: http://localhost:22222/app/

Ich muss es auf diese Weise die Arbeit:

  • https://example.com:33333/homepage/ ->https://example.com:33333/homepage/
  • https://example.com:33333/app/ ->http://localhost:22222/app/

Halten Sie die Remote-URL in Browser-Adressleiste.

Ist das möglich, es an meinem Ende zu setzen (nicht von Proxypass auf entfernten Seite)

einig Chrome Extension oder Proxy-Anwendung Wahrscheinlich?

+0

es den Kontext nicht klar ist, dass Sie diese unter brauchen; Dies ist etwas, das Sie auf einer lokalen Box für lokale Verwendung oder Schaufenster (z. B. bereit, mehrere Copy-Paste-Anweisungen folgen wollen), Enterprise-Einstellung (wollen MitM eine Menge Leute), oder auf der Suche nach einer 100% automatisierten Erweiterung spezifisch zu Google Chrome (und wenn ja, ersetzen Sie bitte die Tags apache und nginx). Was genau willst du erreichen? Wo genau ist die vorhandene Antwort zu kurz? – cnst

+0

@cnst, Lassen Sie mich das Problem beschreiben, das ich gerne lösen würde. Wir haben einen Remote-Dev-Server. Das enthält mehrere Symfony2-Instanzen. wie example.com/page1 und example.com/page2 sind verschiedene aws-Instanzen mit unterschiedlichen Anwendungen. Einer davon (d. H. Seite 1) liegt in meiner Verantwortung. Und ich kann es aus der Ferne und lokal entwickeln. Offensichtlich ist lokal der schnellste Weg, aber es gibt eine Reihe von Gründen, warum es besser ist, remote zu entwickeln, wenn ganze Anwendungen gleichzeitig unter einer ähnlichen Domäne arbeiten. Also möchte ich example.com/page1 auf meine lokale Instanz verweisen, also sende ich keine Dateien per FTP jeden Cmd + S. – Maksym

Antwort

4

Es ist nicht so einfach, und es ist völlig anders als Proxy-Pass.

Wenn Benutzer in ihrem Browser "example.com" eingeben, entscheidet der Browser, wohin die Anfrage gesendet werden soll. Ihre nginx-Konfiguration hat keinerlei Auswirkungen. Der Browser wird jedoch DNS verwenden, um die Entscheidung zu treffen, und Sie können damit interferieren.

Wenn Sie Kontrolle über Benutzer DNS haben - Sie könnten die example.com Domain überschreiben, so dass Anfragen stattdessen zu Ihrem lokalen Server kommen. Wenn es nur Ihr lokaler Rechner ist, können Sie dies in/etc/hosts tun. Danach ist es so einfach wie das Hinzufügen von example.com im Tag server_name in der nginx-Konfiguration.

Eine andere Möglichkeit ist die Konfiguration des Routers, aber ich nehme an, es ist keine Option für Sie.

+0

Hallo! Danke für die Antwort. Klingt nach einem guten Plan, aber könnten Sie bitte ein konkretes Beispiel nennen? – Maksym

0

Wenn ich Ihre Anfrage richtig verstanden habe, ist dies etwas, was ich in Nginx die ganze Zeit tun:

Ich werde/zu meinem Web-Server und alles mit und „_“ zu meinem Elasticsearch Server (zB/index/type/_search), so dass meine gesamte Domäne tatsächlich aus mehreren Systemen besteht, wodurch der Domainname vereinheitlicht und die Kosten für SSL-Zertifikate gesenkt werden.

Hier ist ein Beispiel Nginx config:

server { 
    listen 10.1.40.2:80; 

    #+ your example 
    location ~ /app { 
     #+ another server 
     proxy_pass  http://10.1.40.11:80; 
     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; 
    } 

    #+ your example 
    location ~ /homepage { 
     #+ another server 
     proxy_pass  http://10.1.40.10:80; 
     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; 
    } 

    location ~ /_ { 
     #+ different port 
     proxy_pass  http://127.0.0.1:9200; 
     proxy_http_version 1.1; 
     proxy_set_header Connection "Keep-Alive"; 
     proxy_set_header Proxy-Connection "Keep-Alive"; 
    } 

    location/{ 
     proxy_pass  http://127.0.0.1:80; 
     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; 
    } 
}