Άρχισα να παίζω με το App Engine στο Google Cloud Platform αυτές τις μέρες. Χρησιμοποιώ flexible environment με custom runtime για να τρέχω PHP σε Docker. Το App Engine σερβίρει το περιεχόμενο μέσω HTTP και HTTPS. Έλεγξα την απενεργοποίηση HTTP ή την ανακατεύθυνση της HTTP κίνησης εύκολα σε HTTPS μέσω Web UI, αλλά δυστυχώς δεν είναι δυνατόν αυτή τη στιγμή. Ναι, σωστά άκουσες, το βασικό χαρακτηριστικό δεν υποστηρίζεται!

Έλεγξα το έγγραφο για (https://cloud.google.com/appengine/docs/standard/php7/application-security) και προσπάθησα να ορίσω μια ανακατεύθυνση 301 μέσω του αρχείου app.yaml. Ορίστε τι δοκίμασα:

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

Έκανα deploy μια νέα έκδοση της εφαρμογής μου, αλλά το App Engine εξακολουθεί να σερβίρει μέσω HTTP και δεν ανακατευθύνει σε HTTPS όταν ζητάω μη ασφαλή σύνδεση.

Αυτή τη φορά, αποφάσισα να δώσω μια ευκαιρία στον nginx. Άνοιξα το αρχείο nginx-app.conf μου και έγραψα αυτό:

server_name _;

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

Και Voila! Λειτούργησε τέλεια. Πώς δοκίμασα και κατάλαβα αυτή τη διαδικασία, μπορείς να δεις παρακάτω.

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