我正在使用氮气框架开发我的应用程序,该框架在Yaws和Cowboy Web服务器上运行。我的客户只知道这个'domain-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'。
谢谢。
答案 0 :(得分: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_bridge中获取。
答案 1 :(得分: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重新加载其配置。