需要nginx配置强制https在谷歌应用程序引擎php flex

时间:2018-03-23 03:39:12

标签: php google-app-engine nginx

我们正在向Google App Engine Flex Env​​ironment推出PHP应用程序。

我们已配置自定义域。期望的行为是对http://custom.example.com的任何请求都将转发 https://custom.example.com

目前,如果您转到appspot网址,例如, http://project-name.appspot.com,该请求正确转发 https://project-name.appspot.com

但是,如果您转到自定义域,则不会转发到https。应用程序正常运行,但它允许http连接。

描述可用配置文件的Google App Engine文档:
https://cloud.google.com/appengine/docs/flexible/php/configuring-your-app-with-app-yaml 其中说明: nginx-app.conf文件的内容将包含在主nginx配置文件的服务器部分中。

所以,我正在尝试创建一个强制https的nginx配置。我在nginx-app.conf文件中尝试了这个:

listen 80;
server_name custom.example.com;
return 301 https://$server_name$request_uri;

但是,使用此配置,在浏览器中,我得到:

  

此页面无效

     

custom.example.com重定向了你太多次了。

     

ERR_TOO_MANY_REDIRECTS

我认为我需要一个不同的nginx配置,但却找不到可行的解决方案。

1 个答案:

答案 0 :(得分:0)

将这些行添加到nginx-app.conf文件解决了这个问题。

set $test "";

if ($http_x_forwarded_proto = 'http') {
    set $test "http";
}

if ($test = 'http') {
    return 301 https://$host$request_uri;
}