小编Ily*_*lya的帖子

Certbot /。众所周知/ acme挑战

我是否应该始终将/.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上可以吗?还是在需要重新颁发证书时手动对其进行注释/取消注释?是否有任何安全问题?

任何建议或链接阅读有关此位置的赞赏。谢谢!

nginx lets-encrypt certbot

13
推荐指数
2
解决办法
2万
查看次数

Elm lang重定向到外部URL

如何重定向到外部网址?我尝试过Navigation模块,但它似乎只适用于本地路由.有没有办法在没有js端口的情况下本地执行?

window.location.href = http://google.com;

编辑:我不知何故错过了Navigation.load功能.如下所示,它将有助于重定向.

url-redirection elm

8
推荐指数
1
解决办法
1454
查看次数

Elixir/Phoenix文件上传文件夹

所以我正在尝试在网站上设置上传功能.但是,我正在努力保留上传文件的位置.

我遵循凤凰指南,添加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

upload elixir phoenix-framework

5
推荐指数
1
解决办法
1135
查看次数

Elixir/Phoenix重定向到当前页面

我正在尝试在应用程序中实现不同的语言.所以我所做的就是在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)

elixir elixir-framework phoenix-framework

3
推荐指数
1
解决办法
3629
查看次数

Elixir/Phoenix处理erlang错误

我正在使用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)

这种情况适用于OS的错误(无论是否开始),但不适用于erlang错误,导致凤凰告诉我:enoent. 在此输入图像描述

error-handling elixir phoenix-framework

3
推荐指数
1
解决办法
174
查看次数

是否有在长生不老药中获得DaysInMonth的功能?

我已经搜索了Ecto.DateTime,但是不幸的是没有找到任何有用的东西。有没有办法获得每月的最后一天?

我有一个查询,我从昨天(7月31日)到今天(8月1日)从psql加载订单,今天我只使用1,但是对于昨天,它可以是31、30、29或28。有没有办法知道上个月有多少天?

在此先感谢,任何建议表示赞赏!

datetime elixir ecto phoenix-framework

2
推荐指数
1
解决办法
397
查看次数

Elixir/Phoenix在加入频道时传递有效载荷

通道具有该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)只是%{}.我在这里做错了什么?甚至可以在加入频道时收到消息吗?

elixir phoenix-framework phoenix-channels

2
推荐指数
1
解决办法
925
查看次数

Elixir/Phoenix 扫描目录查找目录

我正在尝试扫描给定的目录并且只需要接收目录。这种方式返回给定中的所有文件和文件夹dir

dir = "/Users/user/releases/"
folders = 
    File.ls(dir)
    |> elem(1)
Run Code Online (Sandbox Code Playgroud)

是否可以过滤folders以仅保留目录而不保留单个文件?谢谢!

elixir phoenix-framework

2
推荐指数
1
解决办法
855
查看次数

Elixir/Phoenix binary_to_atom

我有一张表格

<%= 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-framework

1
推荐指数
1
解决办法
306
查看次数

Elixir / Phoenix地理负载均衡器

我正在尝试使用elixir / phoenix创建一个地理负载平衡器,以便在客户端最初连接时,它将选择最近的(最少ping /等待时间)服务器,并将该服务器用于将来的连接。

假设客户到达的平衡器get "/balance", PageController, :index,并且在我的数据库中,我有2台服务器:server1.domain.comserver2.domain.com。是否可以通过某种方式将客户端的连接(或ping)传递给带有elixir后端的两个服务器?

我可能可以在前端进行逻辑处理,使用js进行ping操作,然后将值返回到后端进行存储。但是,我宁愿一切都在后端。

有关负载平衡的任何提示或建议都值得赞赏,因为我不确定100%是否是这样做的正确方法。谢谢!

latency load-balancing elixir phoenix-framework

1
推荐指数
1
解决办法
292
查看次数

Elixir/Phoenix总和列

我正在尝试获取特定列的总和.我有一个订单模式,字段总数,存储总价格.现在我正在尝试创建一个查询,它将总计所有订单的总价值,但不确定我是否做得对.这是我到目前为止:

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中调用它.截至目前,它不会返回错误,只是在页面上呈现随机符号,而不是总收入.

我认为我的查询是错误的,但无法找到有关如何使其正常工作的良好信息.任何帮助表示感谢,谢谢!

elixir elixir-framework phoenix-framework

0
推荐指数
1
解决办法
1344
查看次数

Elixir/Phoenix 在 ErrorView 上渲染 json

当路由不匹配时,我尝试发送 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)

json elixir phoenix-framework

0
推荐指数
1
解决办法
1816
查看次数