我正在使用N2框架开发我的应用程序,它在Yaws上运行,也在牛仔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服务器的配置。
我请求社区帮助我提供牛仔和Yaws的配置更改,以始终确保无论浏览器输入如何,始终将每个人重定向到端口433或'https://www.domain-name.xx‘,而不是端口80或'http://www.domain-name.xx’。
谢谢。
发布于 2014-03-12 00:24:10
我建议您制作一个自定义的安全处理程序。
示例:
-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().请注意: Up直到最近,protocol()功能还不能用于牛仔的simple_bridge。但是我已经适当地修改了simple_bridge以支持它,所以请确保您是从simple_bridge的最新版本中提取的。
发布于 2014-03-12 22:50:25
对于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重新加载它的配置。
https://stackoverflow.com/questions/22321679
复制相似问题