Canvas LTI 适用于 AWS 开发,但 returns 生产中的消费者密钥无效(负载均衡器)

Canvas LTI works on AWS dev but returns Invalid consumer key on production (Load balancer)

我正在实施从客户端到我们的 AWS EC2 的基本 canvas LTI。当端点是我们的开发 EC2 时,它工作正常。但是,当端点是我们的实时站点时,其中 EC2 在负载均衡器后面,它会失败并显示“无效的消费者密钥”

基本代码完全相同,EC2 都来自同一个 AMI。

欢迎任何想法!

问题是 aws 负载均衡器通过 http 端口 80 连接到 EC2 目标,这导致 oauth 失败。

我不确定 changing/adding https/443 到目标组将如何影响我的自动缩放组和健康检查等,所以我编辑了 OAuth.php 文件,删除了from_request 检查服务器是否为 https 的函数,因为为此我们将始终通过 https 连接。

更改了这个:

public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) {
    $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")
              ? 'http'
              : 'https';
    $http_url = ($http_url) ? $http_url : $scheme .
                              '://' . $_SERVER['SERVER_NAME'] .
                              ':' .
                              $_SERVER['SERVER_PORT'] .
                              $_SERVER['REQUEST_URI'];

为此:

 public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) {        
        $scheme = 'https';
        $http_url = ($http_url) ? $http_url : $scheme .
            '://' . $_SERVER['SERVER_NAME'] .
            ':' .
            443 .
            $_SERVER['REQUEST_URI'];