【问题标题】:Map to custom domain still displays *.scapp.io映射到自定义域仍显示 *.scapp.io
【发布时间】:2018-08-28 11:47:06
【问题描述】:

我只是按照程序将单个域映射到我的自定义域:

  1. 在 ORGS 中创建域mydomain.com
  2. 在空间中创建路由myapp.mydomain.com
  3. 将我的应用映射到空间中的myapp.scapp.iomyapp.mydomain.com
  4. mydomain.com 添加一个名为myapp 和目标mapapp.scapp.io 的CNAME DNS 条目(我使用的是亚马逊路由53)

映射有效,我可以用myapp.mydomain.com访问myapp,但地址仍然显示myapp.scapp.io

如何使映射透明并在地址栏中显示myapp.mydomain.com

【问题讨论】:

  • 听起来您的应用程序中有一些 URL 重写。平台不应接触主机标头。你能告诉我们更多关于你的申请的信息吗?你用的是什么构建包?
  • 您好,谢谢您的回答!我正在 nodejs buildpack [github.com/cloudfoundry/nodejs-buildpack] 上运行一个流星应用程序。正如您在下面的答案中看到的那样,我设法使用 CNAME 和别名使其“工作”。但不确定我是否做得对。

标签: meteor cloud-foundry amazon-route53 swisscomdev


【解决方案1】:

更新:

我设法让它在亚马逊 53 号公路上运行:

  1. 在 ORGS 中创建域mydomain.com
  2. 在空间中创建路由myapp.mydomain.com
  3. 将我的应用映射到空间中的myapp.scapp.iomyapp.mydomain.com

  4. mydomain.com 添加名称为myapp-cname 和目标myapp.scapp.io 的CNAME DNS 条目

  5. mydomain.com 添加名称为myapp 的CNAME DNS 条目,启用别名 并定位myapp-cname.mydomain.com

它按预期在地址栏中显示myapp.mydomain.com,但我怀疑这是正确的做法。

【讨论】:

    【解决方案2】:

    @UPDATE 这个问题来自我的流星应用程序,它没有正确地强制请求https。我使用的是force-ssl 包,但正如自述文件中所说:

    Meteor 捆绑包(即流星构建)不包含 HTTPS 服务器或证书。在 Meteor 包之前终止 SSL 的代理服务器必须设置 x-forwarded-proto 或 forwarded (RFC 7239) 标头才能使此包正常工作。

    因此,我正在使用带有自定义 nginx.conf 的静态文件应用程序。

    我使用staticfile-buildpack 创建了一个静态文件应用程序,将我的私有域添加到manifest.yml 中的routes,并将环境变量FORCE_HTTPS 设置为true

    applications:
      - name: my-nginx
        memory: 128M
        instances: 1
        buildpack: https://github.com/cloudfoundry/staticfile-buildpack.git
        routes:
          - route: 'app1.mydomain.com'
          - route: 'app2.mydomain.com'
          - route: 'app1.subdomain.mydomain.com'
          - route: 'app2.subdomain.mydomain.com'
          - route: 'app3.mydomain.com'
        env:
          FORCE_HTTPS: true
    

    下一步是为我的每个私有域创建自定义 nginx.confserver{...} 块,并在相应的 scapp.io 域上使用 proxy_pass(这里有两个私有域):

    worker_processes 1;
    daemon off;
    
    error_log <%= ENV["APP_ROOT"] %>/nginx/logs/error.log;
    events { worker_connections 1024; }
    
    http {
      charset utf-8;
      log_format cloudfoundry '$http_x_forwarded_for - $http_referer - [$time_local] "$request" $status $body_bytes_sent';
      access_log <%= ENV["APP_ROOT"] %>/nginx/logs/access.log cloudfoundry;
      default_type application/octet-stream;
      include mime.types;
      sendfile on;
    
      gzip on;
      gzip_disable "msie6";
      gzip_comp_level 6;
      gzip_min_length 1100;
      gzip_buffers 16 8k;
      gzip_proxied any;
      gunzip on;
      gzip_static always;
      gzip_types text/plain text/css text/js text/xml text/javascript application/javascript application/x-javascript application/json application/xml application/xml+rss;
      gzip_vary on;
    
      tcp_nopush on;
      keepalive_timeout 30;
      port_in_redirect off; # Ensure that redirects don't include the internal container PORT - <%= ENV["PORT"] %>
      server_tokens off;
    
      server {
        listen <%= ENV["PORT"] %>;
        server_name app1.mydomain.com;
    
        # Redirects to https if the environment variable "FORCE_HTTPS" is set to true
        <% if ENV["FORCE_HTTPS"] %>
         if ($http_x_forwarded_proto != "https") {
           return 301 https://$host$request_uri;
         }
        <% end %>
    
        location / {
          proxy_pass  https://app1.scapp.io/;
        }
      }
    
      server {
        listen <%= ENV["PORT"] %>;
        server_name app2.mydomain.com;
    
        <% if ENV["FORCE_HTTPS"] %>
         if ($http_x_forwarded_proto != "https") {
           return 301 https://$host$request_uri;
         }
        <% end %>
    
        location / {
          proxy_pass  http://app2.scapp.io/;
        }  
      }
    }
    

    接下来的步骤是通常的步骤:

    • 在正确的 ORG 中创建一个域 mydomain.com,并在正确的 SPACE 中创建我的每个私有路由。
    • 在 swisscomdev 控制台中为我的每个私有域创建 SSL 证书。
    • mydomain.com 创建名称为* 和目标my-nginx.scapp.io 的CNAME DNS 条目(瑞士电信为我的静态文件应用程序自动分配的scapp.io 路由)。

    最后,我用cf push 推送了应用程序,它就像一个魅力!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 2022-08-15
      • 2018-08-30
      • 1970-01-01
      • 2014-05-22
      • 2019-09-27
      相关资源
      最近更新 更多