0

我正在使用在 Yaws 和 Cowboy Web 服务器上运行的氮气框架开发我的应用程序。我的客户只知道这个'do​​main-name.xx'或'www.domain-name.xx',默认情况下会访问端口80(不安全的http),但它总是想要' https://www.domain-name.xx '用于安全 http(端口 433)- 他们不愿意继续在浏览器中输入。

我在http://nitrogenproject.com/doc/config.html上看到了一个为 nginx Web 服务器执行此操作的配置

我请求社区帮助我提供 Cowboy 和 Yaws 的配置更改,我可以始终确保每个人无论浏览器条目如何,都始终重定向到端口 433 或“ https://www.domain-name.xx ”端口 80 或“ http://www.domain-name.xx ”。

谢谢你。

4

2 回答 2

1

对于 Yaws,您可以修改rel/nitrogen/etc/yaws.conf文件以添加以下服务器块:

<server domain-name.xx>
    port = 80
    listen = 0.0.0.0
    <redirect>
        / = https://www.domain-name.xx
    </redirect>
</server>

然后要么重新启动,要么运行rel/nitrogen/lib/yaws/bin/yaws --hup告诉 Yaws 重新加载其配置。

于 2014-03-12T14:50:24.973 回答
1

我建议制作一个自定义安全处理程序。

例子:

-module (my_security_handler).
-behaviour (security_handler).
-export ([
    init/2,
    finish/2
]).


init(_Config, State) ->
    Bridge = wf:request_bridge(),
    case Bridge:protocol() of
       http ->
          NewURI = "https://" ++ Bridge:header(host) ++ "/" ++ Bridge:uri(),
          wf:status_code(301),
          wf:header(location, NewURI);
       https ->
          ok
    end,
    {ok, State}.

finish(_Config, State) ->
    {ok, State}.

然后将其加载到nitrogen_yaws.erl 和nitrogen_cowboy.erl 中(你在同一台服务器上运行两者?似乎是一种奇怪的方式)。只需nitrogen:handler(my_security_handler)在两行之间添加:

nitrogen:init_request(RequestBridge, ResponseBridge),
nitrogen:handler(my_security_handler),  %% <---- added here
nitrogen:run().

请注意:直到最近,该protocol()功能还不能用于牛仔的 simple_bridge。但是我已经修改了 simple_bridge 以适当地支持它,因此请确保您从最新的 master 中获取 simple_bridge。

于 2014-03-11T16:24:09.903 回答