Ho iniziato a giocare con App Engine su Google Cloud Platform in questi giorni. Sto usando un ambiente flessibile con un runtime personalizzato per eseguire PHP in Docker. App Engine serve i contenuti sia via HTTP che HTTPS. Ho cercato di disabilitare HTTP o reindirizzare il traffico HTTP facilmente a HTTPS via Web UI ma sfortunatamente, al momento non è possibile. Sì, hai sentito bene, una funzionalità di base non è supportata!

Ho controllato la documentazione per (https://cloud.google.com/appengine/docs/standard/php7/application-security) e ho provato a impostare un redirect 301 via file app.yaml. Ecco cosa ho provato:

handlers:
- url: /.*
  script: auto
  secure: always
  redirect_http_response_code: 301

Ho distribuito una nuova versione della mia app ma App Engine serve ancora via HTTP e non reindirizza a HTTPS quando richiedo una connessione non sicura.

Questa volta, ho deciso di provare con nginx. Ho aperto il mio file nginx-app.conf e ho scritto questo:

server_name _;

if ($http_x_forwarded_proto = “http”) { return 301 https://$host$request_uri; }

E Voilà! Ha funzionato perfettamente. Come ho provato e compreso questo processo lo puoi vedere qui sotto.

➜  ~ curl -I http://ercan-ermis.ew.r.appspot.com/
HTTP/1.1 301 Moved Permanently
Date: Thu, 15 Apr 2021 07:03:34 GMT
Content-Type: text/html
Content-Length: 178
Server: nginx
Location: https://ercan-ermis.ew.r.appspot.com/
Via: 1.1 google