Я хочу перейти на 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