小编nih*_*vey的帖子

混合内容错误nginx入侵kubernetes for rails app

使用Nginx Ingress负载均衡器在GCP中部署Portus.Portus加载得很好,但在尝试使用应用程序并填写一些表单时,我收到以下错误:

VM798:1混合内容:" https://staging.foo.bar/admin/registries/new " 页面是通过HTTPS加载的,但请求了一个不安全的XMLHttpRequest端点" http://staging.foo.bar//api/v1/registries/validate?name = devreg&hostname = staging-foo-barregistry%3A5000&external_hostname =&use_ssl = false&force = false&only%5B%5D = hostname '.此请求已被阻止; 内容必须通过HTTPS提供.

Nginx配置:https://github.com/kubic-project/caasp-services/blob/master/contrib/helm-charts/portus/templates/nginx-configmap.yaml

环境:

  • GCP中的Kubernetes
  • 通过helm部署的所有资源
  • ssl由kube-lego提供
  • 带有Grape API gem的Rails应用程序
  • 葡萄搭载api如下: mount API::RootAPI => "/"

所以我确保检查手动http调用的代码并没有看到任何内容.我花了一天时间试图挖掘rails docs和nginx docs,看看是什么导致某些应用程序正确加载ssl和API不遵循相同的规则

-----更新1 ------经过进一步调查,看起来它与Vue验证器有关.检查开发人员工具显示以下内容:

卷曲' http://staging.foo.bar//api/v1/registries/validate?name=devreg&hostname=st&external_hostname=&use_ssl=false&force=false&only%5B%5D=name'-X选项-H'访问控制请求-Method:获取'-H'来源:https://staging.foo.bar'-H'Access-Control-Request-Headers:x-csrf-token' - 压缩

它看起来像是在这里调用根URL:

javascript:
      window.API_ROOT_URL = '#{root_url}';
Run Code Online (Sandbox Code Playgroud)

如上所述,root_url设置为/.

然而,分析Vue代码更接近狂欢:

Vue.http.options.root = window.API_ROOT_URL;

Vue.http.interceptors.push((_request, next) => {
  window.$.active = window.$.active || 0;
  window.$.active += 1;

  next(() => {
    window.$.active -= 1;
  });
}); …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails nginx grape-api gcp portus

10
推荐指数
1
解决办法
634
查看次数

我可以在OpenShift中使用自己的域名吗?

我可以在OpenShift应用程序中使用自己的自定义域名吗?

默认情况下,Openshift Online为我提供了*rhcloud.com域名.比如我的appplication网址是<myappname>-<mynamespace>.rhcloud.com.我想知道如何将自定义域名(即example.com)应用于我的应用程序.

dns openshift

9
推荐指数
0
解决办法
3421
查看次数

标签 统计

dns ×1

gcp ×1

grape-api ×1

nginx ×1

openshift ×1

portus ×1

ruby-on-rails ×1