yaws 因 httpc 崩溃:请求 docker 容器提供的 URL
Posted
技术标签:
【中文标题】yaws 因 httpc 崩溃:请求 docker 容器提供的 URL【英文标题】:yaws crashes with httpc:request for URL served by docker container 【发布时间】:2021-11-30 09:08:33 【问题描述】:我在我的 docker 堆栈中使用 yaws
和 adminer
。以前,我曾经通过nginx
将https://mydomain.tld/adm?foo=bar
路由到正确的容器
location /adm/
proxy_pass http://adm:8080;
如何在yaws
中做到这一点?
想法是直接从容器adm
中获取结果。进入yaws
容器并发出curl -v 'http://adm:8080'
按预期工作。
我的 Erlang 代码很简单,但我遇到了一个我无法理解的错误。我首先解析adm
的URL,如果为真,则将URL 从https://mydomain.tld/adm?foo=bar
转换为http://adm:8080?foo=bar
,然后调用out_adm
out_adm(Url, A) ->
inets:start(),
Http_result = httpc:request(Url),
case Http_result of
ok, _Version, 200, _ReasonPhrase, _Headers, html ->
?trace('out_check_adm(A)======PASS_THROUGH HTML====> Url', [Url]),
Html;
_ ->
not_200
end.
在跟踪的帮助下,我知道Http_result
可以使用Status
200。
Mod:myurl line:863 'out_adm(A)=====PASS_THROUGH HTML====> Url' ["http://adm:8080"]
=ERROR REPORT==== 11-Oct-2021::17:55:28.784448 ===
yaws code at appmod:0 crashed or ret bad val:60
Req: http_request,'GET',abs_path,"/adm",1,1
我一无所知。对我来说,一切都很清楚和容易,因此这个错误令人惊讶。问题是什么?我如何理解错误信息? Html
有问题吗?如果有,是什么?
查看https://github.com/erlyaws/yaws/blob/master/src/yaws_server.erl 中的定义对我没有帮助:
handle_out_reply(Reply, LineNo, YawsFile, _UT, ARG) ->
L = ?F("yaws code at ~s:~p crashed or "
"ret bad val:~p ~nReq: ~p",
[YawsFile, LineNo, Reply, ARG#arg.req]),
handle_crash(ARG, L).
我该如何调试呢?这是docker
还是yaws
的问题?
【问题讨论】:
在阅读infoq.com/articles/vinoski-erlang-rest时发现我的错误 另见***.com/questions/69530042/… 【参考方案1】:发现我的错误:
在我的out_adm
函数中,它必须是html, Html;
,而不是简单的Html;
但现在我面临另一个问题:见HTML is not applying the CSS when viewed in browser
【讨论】:
以上是关于yaws 因 httpc 崩溃:请求 docker 容器提供的 URL的主要内容,如果未能解决你的问题,请参考以下文章
Centos docker容器因6分段故障而崩溃 - 这是核心转储