Caddy: Difference between revisions
imported>Onny mNo edit summary |
imported>Montchr fix code block formatting resulting in invalid rendered html entities |
||
Line 5: | Line 5: | ||
The example snippet below will run Caddy on http://localhost and serving an [http://localhost/example.html example.html] page. | The example snippet below will run Caddy on http://localhost and serving an [http://localhost/example.html example.html] page. | ||
<syntaxhighlight lang="nix> | |||
services.caddy = { | services.caddy = { | ||
enable = true; | enable = true; | ||
Line 21: | Line 21: | ||
''; | ''; | ||
}; | }; | ||
</ | </syntaxhighlight> | ||
== Configuration examples == | == Configuration examples == | ||
Line 28: | Line 29: | ||
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. | 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. | ||
<syntaxhighlight lang="nix> | |||
caddy = { | caddy = { | ||
enable = true; | enable = true; | ||
Line 42: | Line 43: | ||
''; | ''; | ||
}; | }; | ||
</ | </syntaxhighlight> | ||
=== Reverse proxy === | === 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> | 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> | ||
<syntaxhighlight lang="nix> | |||
caddy = { | caddy = { | ||
enable = true; | enable = true; | ||
Line 53: | Line 55: | ||
reverse_proxy http://10.25.40.6 | reverse_proxy http://10.25.40.6 | ||
''; | ''; | ||
}; | }; | ||
</ | </syntaxhighlight> | ||
=== Redirect === | === Redirect === |
Revision as of 03:57, 6 February 2023
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 page.
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.
caddy = {
enable = true;
virtualHosts."example.org".extraConfig = ''
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
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" ];
};
PHP FastCGI
Serving a PHP application in /var/www
on http://localhost .
services.caddy = {
enable = true;
virtualHosts."http://localhost" = {
extraConfig = ''
root * /var/www
file_server
php_fastcgi unix/var/run/phpfpm/localhost.sock
'';
};
};
You'll need a PHP-FPM socket listening on Unix socket path /var/run/phpfpm/localhost.sock
.