Comecei a brincar com App Engine no Google Cloud Platform esses dias. Estou usando um ambiente flexivel com um runtime personalizado para rodar PHP em Docker. O App Engine serve o conteudo via HTTP e HTTPS tambem. Verifiquei se era possivel desabilitar HTTP ou redirecionar o trafego HTTP facilmente para HTTPS via Web UI, mas infelizmente nao e possivel no momento. Sim, voce ouviu direito, o recurso basico nao esta disponivel!

Verifiquei a documentacao (https://cloud.google.com/appengine/docs/standard/php7/application-security) e tentei configurar um redirecionamento 301 via arquivo app.yaml. Aqui esta o que tentei:

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

Implantei uma nova versao do meu app, mas o App Engine ainda serve via HTTP e nao redireciona para HTTPS quando solicito uma conexao insegura.

Desta vez, decidi dar uma chance ao nginx. Abri meu arquivo nginx-app.conf e escrevi isso:

server_name _;

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

E Voila! Funcionou perfeitamente. Como tentei e entendi este processo, voce pode ver abaixo.

➜  ~ 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