Перенаправление на 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 выгодно.
1 ответ
Исправление Nginx было бы неплохо, но я не уверен, было ли это особенно уместным при использовании nginx. Я не мог понять это, поэтому для любого спотыкающегося об этом - вот, как я решил это в метеоре с Железным Маршрутизатором.
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