我是否应该始终将/.well-known/acme-challenge暴露在服务器上?这是我的HTTP配置:
server {
listen 80;
location '/.well-known/acme-challenge' {
root /var/www/demo;
}
location / {
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
}
Run Code Online (Sandbox Code Playgroud)
它基本上将所有请求重定向到https,除了acme-challenge(用于自动续订)。我的问题:将位置“ /.well-known/acme-challenge”始终暴露在端口80上可以吗?还是在需要重新颁发证书时手动对其进行注释/取消注释?是否有任何安全问题?
任何建议或链接阅读有关此位置的赞赏。谢谢!
如何重定向到外部网址?我尝试过Navigation模块,但它似乎只适用于本地路由.有没有办法在没有js端口的情况下本地执行?
即 window.location.href = http://google.com;
编辑:我不知何故错过了Navigation.load功能.如下所示,它将有助于重定向.
所以我正在尝试在网站上设置上传功能.但是,我正在努力保留上传文件的位置.
我遵循凤凰指南,添加plug Plug.Static, at: "/files", from: "/media", gzip: false到我的Endpoint文件,并在项目的根目录中创建/ media文件夹.但不断得到错误:no route found for GET /files/3-news.jpg (Kz.Router).
我不确定我做错了什么,也许/media文件夹的位置不正确?我把它放到根,其他文件夹,如web,priv,test等.这是正确的地方吗?或者路径必须是完整的OS路径,如/Users/Jack/Desktop/myApp/media/?
在此先感谢你们,任何建议都表示赞赏!
PS我能够与上传文件File.cp(upload.path, "media/#{file_name}"),他们似乎在/media,但仍然无法通过访问它们http://localhost:4000/files/4-news.jpg
我正在尝试在应用程序中实现不同的语言.所以我所做的就是在db中的Session中创建lang变量,它保留当前选择的语言.
问题是我正在通过更新操作调用和更新值:
def update(conn, %{"id" => id, "session" => session_params}) do
session = Repo.get!(Session, id)
changeset = Session.changeset(session, session_params)
case Repo.update(changeset) do
{:ok, _session} ->
conn
|> put_flash(:info, "Session updated successfully.")
|> redirect(to: page_path(conn, :tableshow))
{:error, changeset} ->
render(conn, "edit.html", session: session, changeset: changeset)
end
end
Run Code Online (Sandbox Code Playgroud)
,它将其重定向到特定路径(此处:page_path).我的问题:一旦调用动作,是否可以获取当前路径并重定向到它?那么,当你改变语言时,它不仅仅是将你重定向到一个特定的页面,而只是重新加载当前页面,在那里调用了动作?语言选择器在每个页面的标题中.所以我希望页面只是重新加载.任何建议?
附加信息:我正在调用app.html.eex中的操作
<%= render Pos1.SessionView, "session_en.html", changeset: @changesetlang, action: session_path(@conn, :update, @session) %>
Run Code Online (Sandbox Code Playgroud)
其中session_en.html是:
<%= form_for @changeset, @action, fn f -> %>
<%= hidden_input f, :lang, value: "1" %>
<%= submit "EN", class: "btn …Run Code Online (Sandbox Code Playgroud) 我正在使用System.cmd命令来处理文件.但是,如果系统上未找到的文件,它提出了引发ArgumentError,具体Erlang error: :enoent.如何使用案例功能处理此错误?到目前为止,这是我的代码:
case System.cmd(generate_executable(settings), ["start"]) do
{output, 0} ->
IO.inspect("Start successful")
{output, error_code} ->
IO.inspect("Start failed")
end
Run Code Online (Sandbox Code Playgroud)
我已经搜索了Ecto.DateTime,但是不幸的是没有找到任何有用的东西。有没有办法获得每月的最后一天?
我有一个查询,我从昨天(7月31日)到今天(8月1日)从psql加载订单,今天我只使用1,但是对于昨天,它可以是31、30、29或28。有没有办法知道上个月有多少天? 在此先感谢,任何建议表示赞赏!通道具有该authorized?功能,我想在加入通道时传递生成的本地令牌,以便我可以验证用户的角色,如下所示:
const data = { token: localStorage.getItem('phoenixAuthToken') };
channel.join(data).receive('ok', (response) => {
...
});
});
Run Code Online (Sandbox Code Playgroud)
但是,在我的频道设置中,我似乎没有从加入时的客户端收到任何内容:
def join("settings", payload, socket) do
IO.inspect(payload)
if authorized?(payload) do
{:ok, socket}
else
{:error, %{reason: "unauthorized"}}
end
end
Run Code Online (Sandbox Code Playgroud)
IO.inspect(payload)只是%{}.我在这里做错了什么?甚至可以在加入频道时收到消息吗?
我正在尝试扫描给定的目录并且只需要接收目录。这种方式返回给定中的所有文件和文件夹dir:
dir = "/Users/user/releases/"
folders =
File.ls(dir)
|> elem(1)
Run Code Online (Sandbox Code Playgroud)
是否可以过滤folders以仅保留目录而不保留单个文件?谢谢!
我有一张表格
<%= select f, :user_id, ["?????": "2", "wow": "3"] %>
如果我只使用英语,那就完美了.但是中文或任何其他返回错误
** (ArgumentError) argument error
:erlang.binary_to_atom("?????", :utf8)
(elixir) src/elixir_parser.yrl:512: :elixir_parser.yeccpars2_93/7
Run Code Online (Sandbox Code Playgroud)
我相信它与编码有关.如何将字符串转换为可接受的格式?
提前致谢!
我正在尝试使用elixir / phoenix创建一个地理负载平衡器,以便在客户端最初连接时,它将选择最近的(最少ping /等待时间)服务器,并将该服务器用于将来的连接。
假设客户到达的平衡器get "/balance", PageController, :index,并且在我的数据库中,我有2台服务器:server1.domain.com和server2.domain.com。是否可以通过某种方式将客户端的连接(或ping)传递给带有elixir后端的两个服务器?
我可能可以在前端进行逻辑处理,使用js进行ping操作,然后将值返回到后端进行存储。但是,我宁愿一切都在后端。
有关负载平衡的任何提示或建议都值得赞赏,因为我不确定100%是否是这样做的正确方法。谢谢!
我正在尝试获取特定列的总和.我有一个订单模式,字段总数,存储总价格.现在我正在尝试创建一个查询,它将总计所有订单的总价值,但不确定我是否做得对.这是我到目前为止:
def create(conn, %{"statistic" => %{"date_from" => %{"day" => day_from, "month" => month_from, "year" => year_from}}}) do
date_from = Ecto.DateTime.cast!({{year_from, month_from, day_from}, {0, 0, 0, 0}})
revenue = Repo.all(from p in Order, where: p.inserted_at >= ^date_from, select: sum(p.total))
render(conn, "result.html", revenue: revenue)
end
Run Code Online (Sandbox Code Playgroud)
只是<%= @revenue %>在html.eex中调用它.截至目前,它不会返回错误,只是在页面上呈现随机符号,而不是总收入.
我认为我的查询是错误的,但无法找到有关如何使其正常工作的良好信息.任何帮助表示感谢,谢谢!
当路由不匹配时,我尝试发送 json。从error_view.ex,我认为错误首先出现:
def template_not_found(_template, assigns) do
render "404.html", assigns
end
Run Code Online (Sandbox Code Playgroud)
但如果我将其更改为:
def template_not_found(_template, assigns) do
%{message: "custom error"}
end
Run Code Online (Sandbox Code Playgroud)
它实际上并不发送 json ,而是返回 me no function clause matching in Phoenix.Template.HTML.encode_to_iodata!/1。我相信这是因为它需要发送一些 html。可以改成发送json吗?
我的路由器:
defmodule AppWeb.Router do
use AppWeb, :router
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :protect_from_forgery
plug :put_secure_browser_headers
end
pipeline :api do
plug :accepts, ["json"]
end
scope "/", AppWeb do
pipe_through :browser # Use the default browser stack
get "/", PageController, :index
end
scope …Run Code Online (Sandbox Code Playgroud)