2016-02-01 12 views
5

Krótka historia: Mamy zdalny serwer dev. Który zawiera kilka instancji Symfony2. Podobnie jak przyklad.com/page1 i przyklad.com/page2 są różnymi instancjami AWS z różnymi aplikacjami. Jednym z nich (tj. /strona 1) jest moja odpowiedzialność. I jestem w stanie rozwijać to zdalnie i lokalnie. Oczywiście lokalnie jest najszybszy sposób, ale istnieje lista powodów, dla których lepiej rozwijać się zdalnie, gdy całe aplikacje działają jednocześnie pod podobną domeną. Dlatego chcę zrobić example.com/page1, aby odnieść się do mojej lokalnej instancji, więc nie wysyłam plików przez FTP co Cmd + S.Czy mogę umieścić dokładny zdalny adres URL na lokalnym porcie z innym portem?

Od ustawień Apache mogę mapować niektóre lokalnego URL do zdalnego jednego, robi to z ProxyPass

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

Co muszę, jest dokładnie taka sama, ale odwrotnie.

Mam dwie aplikacje działające zdalnie i lokalnie.

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

Local: http://localhost:22222/app/

Muszę dostać to działa w ten sposób:

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

Utrzymywanie zdalnego adresu URL w pasku adresu przeglądarki.

Czy to możliwe, aby ustawić go na mojej stronie (nie z ProxyPass na zdalnej)

Prawdopodobnie niektóre Chrome Extension lub Proxy aplikacji?

+0

nie jest jasne, kontekst, że trzeba to pod; czy jest to coś, co chcesz zrobić na lokalnym pudełku do lokalnego użytku lub do prezentacji (np. chcesz przestrzegać wielu instrukcji kopiowania i wklejania), ustawień dla przedsiębiorstw (chcesz mieć MitM kilka osób) lub szukasz w 100% automatycznego rozszerzenia do Google Chrome (a jeśli tak, to proszę wymienić tagi apache i nginx). Co dokładnie próbujesz osiągnąć? gdzie dokładnie obecna odpowiedź jest krótka? – cnst

+0

@ cnst, Pozwól mi opisać problem, który chciałbym rozwiązać. Mamy zdalny serwer dev. Który zawiera kilka instancji Symfony2. jak example.com/page1 i example.com/page2 to różne instancje aws z różnymi aplikacjami. Jednym z nich (tj./Strona 1) jest moja odpowiedzialność. I jestem w stanie rozwijać to zdalnie i lokalnie. Oczywiście lokalnie jest najszybszy sposób, ale istnieje lista powodów, dla których lepiej rozwijać się zdalnie, gdy całe aplikacje działają jednocześnie pod podobną domeną. Dlatego chcę zrobić example.com/page1, aby odnieść się do mojej lokalnej instancji, więc nie wysyłam plików przez FTP co Cmd + S. – Maksym

Odpowiedz

4

To nie jest takie proste i zupełnie różni się od przekazywania przez proxy.

Gdy użytkownik wpisze "example.com" w przeglądarce - przeglądarka decyduje, gdzie wysłać żądanie, twoja konfiguracja nginxa nie ma żadnego wpływu. Przeglądarka jednak użyje DNS do podjęcia decyzji i możesz w to przeszkodzić.

Jeśli masz kontrolę nad DNSami użytkowników - możesz zastąpić domenę example.com, aby zamiast tego żądania trafiały na twój lokalny serwer. Jeśli jest to tylko Twoja maszyna lokalna, możesz to zrobić w/etc/hosts. Później jest to tak proste, jak dodanie example.com w tagu nazwa_serwera w konfiguracji nginx.

Inną możliwością jest konfigurowanie routera, ale zakładam, że nie jest to opcja dla ciebie.

+0

cześć! Dziękuję za odpowiedź. Brzmi jak dobry plan, ale czy mógłbyś podzielić się konkretnym przykładem? – Maksym

0

Jeśli rozumiem Twoją prośbę prawidłowo, to jest coś zrobić, cały czas w Nginx:

będę musiał/go do mojego serwera WWW i nic z i „_” iść do mojego serwera Elasticsearch (np/index/type/_search), więc cała moja domena to w rzeczywistości wiele systemów, co jednoczy nazwę domeny i obniża koszt certyfikatów SSL.

Oto próbka 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; 
    } 
} 
Powiązane problemy