Serving static files from a phoenix API

I’m trying to serve a file from my phoenix API, and believe Plug.Static is the way to do it, but am struggling to get it to work.

The file is an apple certificate, and I’m placing it in priv/certificates/apple

I’ve setup the following code in my endpoint.ex file:

plug Plug.Static,
    at: "/.well-known/apple",
    from: :my_app,
    gzip: false,
    only: ~w(certificates apple)

But when I visit the URL I get no route found for GET /.well-known/apple.

Do I need to add this to my routes file? And if so, does it hit a controller? What would that controller action look like?

Thanks in advance

How about simply putting it in priv/static/...?

2 Likes

The default path for reading static files is priv/static, so you need to tweak it:

plug Plug.Static,
    # Note the root path.
    at: "/.well-known",
    from: {:my_app, "priv/certificates"},
    gzip: false,
    only: ~w(apple)

But I’d suggest following @silverdr advice and put the files in the usual location. Assuming the actual file is called apple, try this:

  • Put the file into static: /priv/static/.well-known/apple
  • Use “standard” Static plug config:
  plug Plug.Static,
    at: "/",
    from: :my_app,
    gzip: false,
    only: [".well-known"]
2 Likes

I must have misread - I thought files had to go into /priv and not /priv/static - many thanks both and for the specific code example