Caddy: Difference between revisions
imported>Onny mNo edit summary |
imported>Onny Add config examples for serving static files and SSL config |
||
Line 3: | Line 3: | ||
== Installation == | == Installation == | ||
The | The example snippet below will run Caddy on http://localhost and serving an [http://localhost/example.html example.html] file. | ||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | |||
services.caddy = { | |||
enable = true; | |||
extraConfig = '' | |||
http://localhost { | |||
encode gzip | |||
file_server | |||
root * ${ | |||
pkgs.runCommand "testdir" {} '' | |||
mkdir "$out" | |||
echo hello world > "$out/example.html" | |||
'' | |||
} | |||
} | |||
''; | |||
}; | |||
</nowiki>}} | |||
== Configuration examples == | |||
=== SSL === | |||
Caddy will automatically try to acquire SSL certificates for the specified domain, in this example <code>example.org</code>. This requires you to configure the DNS records of your domain correctly, which should point to the address of your Caddy server. The [[firewall]] ports <code>80</code> and <code>443</code> needs to be opened. | |||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | {{file|/etc/nixos/configuration.nix|nix|<nowiki> | ||
Line 9: | Line 33: | ||
enable = true; | enable = true; | ||
virtualHosts."example.org".extraConfig = '' | virtualHosts."example.org".extraConfig = '' | ||
http://localhost { | |||
encode gzip | |||
file_server | |||
root * ${ | |||
pkgs.runCommand "testdir" {} '' | |||
mkdir "$out" | |||
echo hello world > "$out/example.html" | |||
'' | |||
} | |||
} | |||
''; | ''; | ||
}; | }; | ||
</nowiki>}} | </nowiki>}} | ||
=== Reverse proxy === | |||
== | The following snippet creates a reverse proxy for the domain <code>example.org</code>, redirecting all requests to <code><nowiki>http://10.25.40.6</nowiki></code> | ||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | |||
caddy = { | |||
enable = true; | |||
virtualHosts."example.org".extraConfig = '' | |||
reverse_proxy http://10.25.40.6 | |||
''; | |||
}; | |||
</nowiki>}} | |||
=== Redirect === | === Redirect === | ||
Redirecting <code>example.org</code> and <code>old.example.org</code> to <code>www.example.org</code> | Redirecting <code>example.org</code> and <code>old.example.org</code> to <code>www.example.org</code> | ||
<syntaxhighlight lang="nix> | <syntaxhighlight lang="nix> | ||
caddy.virtualHosts."example.org" = { | caddy.virtualHosts."example.org" = { | ||
Line 29: | Line 72: | ||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== See also == | == See also == | ||
* [https://caddyserver.com/docs/ Official Caddy documentation] | * [https://caddyserver.com/docs/ Official Caddy documentation] | ||
[[Category:Applications]] | [[Category:Applications]] | ||
[[Category:Web Servers]] | [[Category:Web Servers]] |
Revision as of 16:50, 6 August 2022
Caddy is a HTTP/2 capable web server with automatic HTTPS.
Installation
The example snippet below will run Caddy on http://localhost and serving an example.html file.
/etc/nixos/configuration.nix
services.caddy = {
enable = true;
extraConfig = ''
http://localhost {
encode gzip
file_server
root * ${
pkgs.runCommand "testdir" {} ''
mkdir "$out"
echo hello world > "$out/example.html"
''
}
}
'';
};
Configuration examples
SSL
Caddy will automatically try to acquire SSL certificates for the specified domain, in this example example.org
. This requires you to configure the DNS records of your domain correctly, which should point to the address of your Caddy server. The firewall ports 80
and 443
needs to be opened.
/etc/nixos/configuration.nix
caddy = {
enable = true;
virtualHosts."example.org".extraConfig = ''
http://localhost {
encode gzip
file_server
root * ${
pkgs.runCommand "testdir" {} ''
mkdir "$out"
echo hello world > "$out/example.html"
''
}
}
'';
};
Reverse proxy
The following snippet creates a reverse proxy for the domain example.org
, redirecting all requests to http://10.25.40.6
/etc/nixos/configuration.nix
caddy = {
enable = true;
virtualHosts."example.org".extraConfig = ''
reverse_proxy http://10.25.40.6
'';
};
Redirect
Redirecting example.org
and old.example.org
to www.example.org
caddy.virtualHosts."example.org" = {
extraConfig = ''
redir https://www.example.org
'';
serverAlias = [ "old.example.org" ];
};