将自定义域与Google生成的安全证书一起使用时,如何获得http请求以重定向到https?
我尝试在设置中将Django属性SECURE_SSL_REDIRECT设置为True,但这没有用。
编辑:是的,这个问题已经存在,但是该解决方案仅适用于Python2。
解决方案:就我的目的而言,解决方案只是从Appengine Flexible环境切换到Appengine Standard环境。我通过以下app.yaml解决了SSL问题。
runtime: python37
entrypoint: gunicorn -b :$PORT <django-project-name>.wsgi
handlers:
- url: /.*
secure: always
redirect_http_response_code: 301
script: auto
beta_settings:
cloud_sql_instances: "<project-id>:<region>:<cloud-sql-instance>"
答案 0 :(得分:2)
经过一番猜测和检查,我偶然发现了一个解决方案。
不要使用SECURE_SSL_REDIRECT Django设置。而是更新您的app.yaml以包括secure:always,同时还要确保已设置入口点,url设置为/.*和脚本设置为auto。
尽管Google文档明确声明已弃用处理程序部分,但在有无处理程序部分的情况下测试应用程序的部署表明,截至今天,GAE确实引用了app.yaml的处理程序部分。
编辑:发现这一点清楚地显示了Python 3.7 app.yaml中的处理程序-https://cloud.google.com/appengine/docs/standard/python3/config/appref#handlers_element
app.yaml
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT <projectid>.wsgi
handlers:
- url: /.*
secure: always
script: auto
beta_settings:
cloud_sql_instances: "<projectid>:<dbregion>:<dbinstance>"
runtime_config:
python_version: 3
遇到更多问题后,尽管有文档说处理程序可以正常工作,但我还是切换到了Appengine Standard环境,它运行良好。
runtime: python37
entrypoint: gunicorn -b :$PORT <django-project-name>.wsgi
handlers:
- url: /.*
secure: always
redirect_http_response_code: 301
script: auto
beta_settings:
cloud_sql_instances: "<project-id>:<region>:<cloud-sql-instance>"