Open1

Cloud Run サイドカー

ShenShen

Cloud Run サイドカーでnginx containerを前段に置いたあることに気を付けてほしいことがあります。

NginxにCors設定を行う際に、OPTIONSリクエストに対して、204を返すことです!200はダメで、Cloud Runは502エラーで怒ります。

ダメな例↓

Nginxは以下設定してしまうと、クロスオリジンからのリクエストでCloud RunのログにOPTIONS 502エラーが吐きます。

if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' *;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type,platform,ServicePlatformID,versionid';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 200;
}
proxy_pass http://127.0.0.1:3000;
}

GOOD例↓

OPTIONSリクエストを204にすると、エラー吐かずに通信がちゃんとできることです。

if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' *;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type,platform,ServicePlatformID,versionid';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
proxy_pass http://127.0.0.1:3000;
}

参照した記事はこちらです。
https://www.googlecloudcommunity.com/gc/Infrastructure-Compute-Storage/Facing-502-errors-after-switching-to-Google-Cloud-Load-Balancer/m-p/650708#M4714