Google App Engine flex CORS配置

问题描述 投票:2回答:1

我有一个托管在App Engine中的站点(A)需要由另一个站点(B)托管在其他地方的proxy_pass访问。

以前这个站点(A)是在Kubernetes中托管的,入口配置看起来像这样,它运行得很好:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: webapp
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: my-webapp.com
    http:
      paths:
      - path: /
        backend:
          serviceName: webapp
          servicePort: 80
  - host: www.remote-server.com
    http:
      paths:
      - path: /
        backend:
          serviceName: webapp
          servicePort: 80

这样,通过将www.remote-server.com添加到主机列表中,允许www.remote-server.com通过nginx proxy_pass呈现my-webapp.com。

现在我的问题是我们如何在App Engine灵活环境(nodejs运行时)中配置相同的东西?目前这是我们在没有任何特殊配置的情况下在App Engine中尝试此操作时获得的:

enter image description here

这是因为远程服务器(在这种情况下它是用于测试的localhost)不允许代理到App Engine服务(这是我的假设)。

作为参考,这是我在本地用于测试的nginx配置:

server {
    listen       8080;
    server_name  localhost;
    root   /path/to/folder/;

    location / {
        index  index.html index.htm;
    }

    location /shopping {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass https://url-to-my-appengine-app.appspot.com;
        proxy_redirect default;
    }
}

我希望这是有道理的。

google-app-engine nginx google-cloud-platform cross-domain
1个回答
1
投票

我不相信App Engine灵活环境中的Node.js运行时的underlying Docker image使用NGINX作为Web服务器,因此即使您在本地工作,也可能在部署时寻求无法工作的路径。

我相信在您的情况下启用CORS支持,您将不得不在应用程序的代码中而不是在配置文件中设置Access-Control-Allow-Origin头。

© www.soinside.com 2019 - 2024. All rights reserved.