我想访问 www.example.com 并重定向到 subdomain.example.com/homepage,但网址无需从 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 时,我就可以访问子域,它尝试下载的每个 css 和 js 文件都会出现 404 错误。我知道有更好的方法可以做到这一点,但在我们的用例中,这似乎是最干净的。虽然我愿意接受任何想法,但使用 nginx 的解决方案是有利的。
答案1
修复 Nginx 问题会很好,但我不确定这是否是特别适合使用 nginx 的方法。我没能搞清楚,所以对于遇到这个问题的人,以下是我在 Meteor 中使用 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 问题