0

我有一个在本地机器上开发的 ember.js 应用程序。我使用 restify/node.js 服务器使其在本地可用。

当我在我的应用程序中导航时,地址栏会发生如下变化:

示例 1

1. http://dev.server:3000/application/index.html#about
2. http://dev.server:3000/application/index.html#/items
3. http://dev.server:3000/application/index.html#/items/1
4. http://dev.server:3000/application/index.html#/items/2

我现在尝试将它部署在运行 nginx 的远程测试服务器上。

尽管一切都在本地运行良好,但我可以导航到我的 Web 应用程序,但主题标签之后的 URI 部分没有更新。

在任何浏览器中:http://test.server/application/index.html始终显示在我的地址栏中。对于与示例 1中相同的点击序列,我总是有:

1. http://web.redirection/application/index.html
2. http://web.redirection/application/index.html
3. http://web.redirection/application/index.html
4. http://web.redirection/application/index.html

此外,如果我直接输入完整的 URI http://web.redirection/application/index.html#/items/1,浏览器将只显示其所在的内容http://test.server/application/index.html(这绝对不是预期的行为)。

我想这来自我的 NGINX 配置,因为该应用程序可以在本地 restify 服务器上完美运行。

此服务器的 NGINX 配置为:

test.server.conf(符号链接到 /etc/nginx/sites-enabled/test.server.conf)

    server {
        server_name test.server web.redirection;

        root /usr/share/nginx/test;
        index index.html index.htm;

        location / {
            try_files $uri $uri/ /index.html;
        }

        location ~ \.csv$ {    
            alias /usr/share/nginx/test/$uri;
        }
    }

nginx.conf

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
    worker_connections 768;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log debug;

    gzip on;
    gzip_disable "msie6";


    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

编辑: 只是为了确保我的测试服务器上没有丢失的文件:我运行了一个 restify/node 服务器(就像在我的开发机器上一样),当我连接到这个服务器时一切正常(!)。nginx 和 restify 服务器都指向相同的文件。

编辑 2

我发现我的问题发生在我使用网络重定向时。如果我使用像http://test.server/application/index.html一切正常的地址如果我使用http://web.redirection/application/index.html它不起作用。

所以这是我的 nginx 配置,它没有正确地将 web.redirection URI 重定向到 test.server 或类似的东西。

有人有想法吗?我想念什么?我应该改变什么才能使这项工作?

编辑 3 和解决方案

我使用的 Web 重定向是 A 类 DNS 记录。这不起作用。使用 CNAME 类型的 DNS 记录可以解决该问题。

4

2 回答 2

1

不,这与 nginx 无关,任何过去的东西#都不会发送到服务器,javascript 代码应该处理这个,我建议使用 firebug 或任何检查器来确保你所有的 js 文件都被加载,并且没有什么会因 404 错误而失败,还要检查检查器控制台上的控制台错误。

于 2013-07-04T12:46:33.523 回答
0

问题来自从 web.redirection 到 test.server 的 DNS 重定向。

这是一个 A 型记录:这不起作用。

使用直接指向 test.server 的 CNAME 类型记录有效。

于 2013-07-05T06:31:32.670 回答