2014-12-25 26 views
5

Jest kilka podobnych pytań na SO, ale żadna dokładnie moja, a ja nie miałem szczęścia, próbując dostosować swoje dotychczasowe odpowiedzi.Nginx URL maskowanie do innej domeny

Chcę zmapować adres URL http://sub.example.com na https://123.12.12.12/path, tak aby przeglądarka nadal wyświetlała adres URL http://sub.example.com.

My Nginx plik config wygląda,

server { 
    listen 80; 
    server_name sub.example.com; 

    location/{ 
     proxy_pass https://123.12.12.12; 
     rewrite ^/$ /path last; 
    } 
} 

Routing tu pracuje, ale URL wyświetlany jest http://sub.example.com/path. Jak sprawić, by wyświetlał tylko http://sub.example.com?

+0

Czy zostaniesz przekierowany do 'http: // sub.example.com/path'? –

+0

Tak, ale jak mam zrobić 'http: // pod.example.com' chociaż? – kennysong

+0

Musisz wyeliminować przekierowanie –

Odpowiedz

18
server { 
    listen 80; 
    server_name sub.example.com; 

    location/{ 
     proxy_pass https://123.12.12.12/path; 
    } 
} 

Tak to działa. Jeśli proxy_pass zawiera część lokalizacji - bieżąca lokalizacja zostanie wymieniona na określoną. http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

Ale to tylko pomoc dla żądania http i przekierowań http. Jeśli aplikacja tworzy html z łączami https://123.12.12.12 - nadal jest niezmieniona. W takim przypadku możesz wypróbować ngx_http_sub_module.

+0

Co jeśli chcę przekazać nagłówek HOST do zaplecza i nie ma nazwy DNS dla hosta zaplecza? Czy to też możliwe? – VsMaX

+0

@VsMaX możesz użyć 'proxy_set_header Host somevalue.com;' lub, jeśli potrzebujesz przekazać hostowi frontend, przekazuj $ zmienną hosta 'proxy_set_header Host $ host;' –

+0

problem polega na tym, że kiedy ustawię 'serwer_docelowy Host somevalue.com; 'nadal wykonuje zapytanie DNS dla tej nazwy hosta, która nie istnieje. A następnie nginx nie działa z błędem nazwy DNS ... – VsMaX