W Nginx próbowaliśmy przekierować adres URL w następujący sposób:
http://example.com/some/path -> http://192.168.1.24
gdzie użytkownik nadal widzi oryginalny adres URL w przeglądarce. Gdy użytkownik zostanie przekierowany, powiedz, że kliknął link do /section/index.html
, chcielibyśmy, aby zgłoszenie to prowadziło do przekierowania
http://example.com/some/path/section/index.html -> http://192.168.1.24/section/index.html
i ponownie zachowaj oryginalny adres URL.
Nasze próby obejmowały różne rozwiązania wykorzystujące proxy i reguły przepisywania, a poniżej pokazuje konfigurację, która zbliżyła nas do rozwiązania (zauważ, że jest to konfiguracja serwera WWW dla example.com
serwera WWW). Nadal istnieją jednak dwa problemy:
- Nie wykonuje poprawnie przepisywania, ponieważ adres URL żądania otrzymany przez serwer WWW
http://192.168.1.24
zawiera,/some/path
a zatem nie obsługuje wymaganej strony. Po najechaniu kursorem na link po wyświetleniu strony
/some/path
brakuje adresu URLserver { listen 80; server_name www.example.com; location /some/path/ { proxy_pass http://192.168.1.24; proxy_redirect http://www.example.com/some/path http://192.168.1.24; proxy_set_header Host $host; } location / { index index.html; root /var/www/example.com/htdocs; } }
Szukamy rozwiązania, które wymaga jedynie zmiany konfiguracji serwera WWW example.com
. Jesteśmy w stanie zmienić konfigurację na 192.168.1.24
(także Nginx), jednak chcemy tego uniknąć, ponieważ będziemy musieli powtórzyć tę konfigurację dla setek różnych serwerów, przez których dostęp jest proxy example.com
.