Карта для пользовательского домена по-прежнему отображает * .scapp.io - PullRequest
0 голосов
/ 28 августа 2018

Я только что выполнил процедуру для сопоставления одного домена с моим настраиваемым доменом:

  1. Создать домен mydomain.com в ORGS
  2. Создать маршрут myapp.mydomain.com в ПРОСТРАНСТВАХ
  3. Сопоставить мое приложение с myapp.scapp.io и myapp.mydomain.com в ПРОСТРАНСТВАХ
  4. Добавить запись CNAME DNS для mydomain.com с именем myapp и целью mapapp.scapp.io (я использую amazon route 53)

Отображение работает, я могу получить доступ к myapp с помощью myapp.mydomain.com, но адрес по-прежнему показывает myapp.scapp.io

Как сделать отображение прозрачным и отобразить myapp.mydomain.com в адресной строке?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

@ ОБНОВЛЕНИЕ Проблема была связана с моим метеорным приложением, которое неправильно обрабатывало запросы на https. Я использовал пакет force-ssl , но, как сказано в README:

Комплекты Meteor (т.е. сборка Meteor) не включают в себя сервер HTTPS или сертификат. Прокси-сервер, который завершает SSL перед пакетом Meteor, должен установить заголовок x-forwarded-proto или forwarded (RFC 7239) для работы этого пакета.

Поэтому я использую приложение staticfile с пользовательским nginx.conf.

Я создал приложение staticfile с помощью staticfile-buildpack , добавил свои частные домены в routes в manifest.yml и установил для переменной env 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.conf с блоком server{...} для каждого из моих частных доменов с proxy_pass на соответствующем scapp.io домене (здесь с двумя частными доменами):

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/;
    }  
  }
}

Следующие шаги являются обычными:

  • Создайте домен mydomain.com в нужном ORG и каждый из моих частных маршрутов в правильном ПРОСТРАНСТВЕ.
  • Создание SSL-сертификатов для каждого из моих частных доменов в консоли swisscomdev.
  • Создайте записи CNAME DNS для mydomain.com с именем * и целью my-nginx.scapp.io (маршрут scapp.io, автоматически назначаемый swisscom для моего приложения staticfile).

Наконец, я нажал на приложение с cf push, и оно работает как шарм!

0 голосов
/ 28 августа 2018

Обновление:

Мне удалось заставить его работать на амазонке 53:

  1. Создать домен mydomain.com в ORGS
  2. Создать маршрут myapp.mydomain.com в ПРОСТРАНСТВАХ
  3. Сопоставить мое приложение с myapp.scapp.io и myapp.mydomain.com в ПРОСТРАНСТВАХ

  4. Добавить запись CNAME DNS для mydomain.com с именем myapp-cname и целью myapp.scapp.io

  5. Добавьте запись CNAME DNS для mydomain.com с именем myapp, включив Псевдоним и цель myapp-cname.mydomain.com

Он показывает myapp.mydomain.com в адресной строке, как и ожидалось, но я сомневаюсь, что это правильный способ сделать это.

...