NGINX使用角度哈希标记语法将HTTP重定向到HTTPS

时间:2014-11-28 18:36:27

标签: angularjs nginx amazon

我有一台服务器,我只想在HTTPS中运行。我在Amazon AMI上运行Node和Nginx。

要重定向到HTTPS,我只需将其放在我的nginx.conf文件中:

server {
    listen 80;
    server_name my_server;
    return         301 https://$server_name$request_uri;
}

然后配置SSL。但是,当http://www.mypage.com/#/whatever等角色网址出现时,生成的重定向为https://www.mypage.com/,而没有重要的Angular语法。

如何使其适用于Angular哈希标记语法? Nginx版本是1.6.2。

由于

1 个答案:

答案 0 :(得分:3)

这是不可能的。 我不打算谈论重定向到不同协议的nginx最佳方法。

问题是哈希永远不会发送到服务器。

我知道的每个浏览器都会忽略网址中的哈希部分。

因此,例如,如果您将此URL发送到示例服务器:

http://localhost/6/?e#hash_here

请求将发送:

http://localhost/6/?e

浏览器只是将其剥离。

从JS的观点来看,我建议在EventListener上使用一些onhashchange, 这样您就可以拦截所有请求并将location.hash存储在cookie中。

现在,当此请求到达服务器时,您将能够使用nginx $http_cookie(它将类似于angularLocation=#/whatever,因此请使用一些正则表达式来查找它是否存在)