Назад | Перейти на главную страницу

Перенаправление на URL субдомена с сохранением исходного URL и обслуживанием файлов с URL субдомена

Я хочу перейти на www.example.com и меня перенаправят на subdomain.example.com/homepage без изменения URL-адреса с www.example.com.

Уловка в том, что мои css и js размещены на subdomain.example.com. Я борюсь с последней частью. Пока у меня есть это:

http {
    upstream meteor_server {
        ip_hash;
        server 192.168.0.24:88;
    }
    server {
        server_name www.example.com;
        location / {
            proxy_pass http://meteor_server/homepage/;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }
    server {
        server_name subdomain.example.com;
        location / {
            proxy_pass http://meteor_server/;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
}

Это позволяет мне получить доступ к поддомену, когда я перехожу на www.example.com, я получаю 404 для каждого из файлов css и js, которые он пытается загрузить. Я знаю, что есть более эффективные способы сделать что-то подобное, но в нашем случае это самый чистый. Хотя я открыт для любых идей, решение с использованием nginx является благоприятным.

Было бы неплохо исправить Nginx, но я не уверен, было ли это особенно уместным использование nginx. Я не мог понять этого, поэтому для тех, кто наткнулся на это, вот как я решил это в метеоре с помощью Iron-Router.

Meteor.startup(function () {
  if (Meteor.isClient) {
  var hostnameArray = document.location.hostname.split(".");
    if (hostnameArray[0] === "www") {
      Router.route("home", {template: "www-homepage"});
    }
    else {
      Router.route("home", {template: "subdomain-homepage"});
    }
  }
}

Надеюсь, это будет полезно кому-то другому. Кредит на Кевинпетер из этой проблемы GitHub