Mam skonfigurowane równoważenie obciążenia HTTP / HTTPS w Google Compute Engine z 2 globalnymi regułami przesyłania (HTTP i HTTPS). Każda reguła wskazuje na usługę zaplecza z protokołem HTTP.
Chcę, aby wszystkie prośby http://*
trafiły do https://*
.
Gdy moduł równoważenia obciążenia komunikuje się z usługami zaplecza za pośrednictwem protokołu HTTP, nie sądzę, żebym mógł uzyskać nginx w usłudze zaplecza, aby go odesłać 301
.
Próbowałem tuzin drobnych poprawek w Google Compute i wszystkie kończą się na Google Compute zwracając 502
.
Jestem pewien, że ktoś wcześniej to skonfigurował. Wszelkie wskazówki i wskazówki we właściwym kierunku są bardzo mile widziane.
load-balancing
google-compute-engine
Ryan Leckey
źródło
źródło
Odpowiedzi:
Mamy podobną konfigurację za pomocą modułu równoważenia obciążenia HTTP / HTTPS i udało nam się wymusić HTTPS. Nie jest to możliwe bezpośrednio z modułu równoważenia obciążenia, ale można go skonfigurować w usłudze zaplecza. Moduł równoważenia obciążenia Google Cloud ustawi nagłówek http X-Forwarded-Proto o wartości http lub https. Sprawdzasz ten nagłówek w swojej usłudze zaplecza (w naszym przypadku Lakier, ale można to również zrobić w Nginx), a jeśli wartość to http, odsyłasz 301.
źródło
if ($http_x_forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
426
nagłówka uaktualnienia HTTP zamiast 301. Czytaj więcej: stackoverflow.com/questions/17873247/...Napotkałem dzisiaj ten problem i udało mi się go rozwiązać za pomocą równoważenia obciążenia TCP. Jeśli nie potrzebujesz opcji równoważenia obciążenia specyficznych dla HTTP / HTTPS, być może możesz użyć modułu równoważenia obciążenia TCP (bez SSL) do odbierania ruchu zarówno do portu 80, jak i 443. W przypadku ruchu z portu 80 możesz odesłać 301.
źródło