前言

呵呵 这是最近帮助同事 搭建 pageplug 的时候碰到的一个问题, 当时 我觉得还蛮奇怪, 为什么启动服务 需要去验证访问 cdn.optimizely.com ? 

然后 需要花点时间 看一下这个问题, 稍微梳理一下 

然后 也发现了 自己理解的的一些问题, 这里并没有去 验证访问 cdn.optimizely.com, 只是尝试去解析 cdn.optimizely.com 的地址信息, 没有获取到 然后 nginx 报错了而已 

GitHub - cloudtogo/pageplug: PagePlug 是 Appsmith 的中国化项目,是一个开源的、声明式的、可视化的、符合开发者直觉的前端低代码框架,可以用来制作 web 应用、微信小程序。【中国版Appsmith】

 

 

测试用例

复现的方式很简答, 关闭 wifi 然后 使用如下配置文件启动 nginx 


worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  2;
    #keepalive_timeout  65;

    #gzip  on;


    server {
        listen 80;
        server_name 127.0.0.1;

        location / {
            proxy_pass http://127.0.0.1:3000;
        }

        location /favicon.ico {
            proxy_pass http://127.0.0.1:3000/favicon.ico;
        }

        location /f {
           proxy_pass https://cdn.optimizely.com/;
        }

        location /api {
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_pass http://127.0.0.1:8085;
        }

        location /oauth2 {
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_pass http://127.0.0.1:8085;
        }

        location /login {
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_pass http://127.0.0.1:8085;
        }

        location /data-gl {
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_pass https://echarts.apache.org/examples/data-gl;
        }
    }

}

 

 

然后 启动项目报错如下 

 

 

问题的调试

问题 相对比较简单 我们省略掉一些 不相关的 步骤 

可以看到的是 当前是在解析 nginx.conf 的阶段, 在初始化 upstream 相关 

然后 这里需要尝试使用 getaddrinfo 函数获取地址信息, 然后 没有获取到, 因此走了 host not found 的相关流程 

 

 

问题的解决

1. hosts 中增加 cdn.optimizely.com 的映射配置 

2. 在 dns 中增加 cdn.optimizely.com 的相关配置 

3. 解决掉机器 网络连接的问题 

4. 如果这个 cdn.optimizely.com 的相关资源没有那么重要, 则丢弃这部分资源, 去掉对应的 block 或者 cdn.optimizely.com 更新为 127.0.0.1 

5. 如果这个 cdn.optimizely.com 的相关资源比较重要, 则将这部分资源部署在机器能够访问的地方, 然后更新这部分服务的配置 

 

 

完 

 

 

 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐