96 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ config, pkgs, lib, ... }:
 | 
						|
 | 
						|
{
 | 
						|
  users.users.www-kinealbrigtsen-no = {
 | 
						|
    isSystemUser = true;
 | 
						|
    group = "www-kinealbrigtsen-no";
 | 
						|
  };
 | 
						|
 | 
						|
  users.groups.www-kinealbrigtsen-no = { };
 | 
						|
 | 
						|
  services.mysql.ensureDatabases = [
 | 
						|
    "www_kinealbrigtsen_no"
 | 
						|
  ];
 | 
						|
  services.mysql.ensureUsers = [
 | 
						|
    {
 | 
						|
      name = "www-kinealbrigtsen-no";
 | 
						|
      ensurePermissions = {
 | 
						|
        # "www_kinealbrigtsen_no.*" = "ALL PRIVILEGES"; # For upgrades and special procedures
 | 
						|
        "www_kinealbrigtsen_no.*" = "SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX";
 | 
						|
      };
 | 
						|
    }
 | 
						|
  ];
 | 
						|
 | 
						|
  services.phpfpm.pools.www-kinealbrigtsen-no = {
 | 
						|
    user = "www-kinealbrigtsen-no";
 | 
						|
    group = "www-kinealbrigtsen-no";
 | 
						|
    phpOptions = lib.generators.toKeyValue {} {
 | 
						|
      upload_max_filesize = "1000M";
 | 
						|
      post_max_size = "1000M";
 | 
						|
      memory_limit = "1000M";
 | 
						|
    };
 | 
						|
 | 
						|
    settings = {
 | 
						|
      "listen.owner" = config.services.nginx.user;
 | 
						|
      "listen.group" = config.services.nginx.group;
 | 
						|
      "pm" = "dynamic";
 | 
						|
      "pm.max_children" = 32;
 | 
						|
      "pm.start_servers" = 2;
 | 
						|
      "pm.min_spare_servers" = 2;
 | 
						|
      "pm.max_spare_servers" = 4;
 | 
						|
      "pm.process_idle_timeout" = "10s";
 | 
						|
      "pm.max_requests" = 1000;
 | 
						|
    };
 | 
						|
  };
 | 
						|
 | 
						|
  services.nginx.virtualHosts."kinealbrigtsen.no" = {
 | 
						|
    serverAliases = [ "www.kinealbrigtsen.no" ];
 | 
						|
    root = "/var/www/www-kinealbrigtsen-no";
 | 
						|
    locations = {
 | 
						|
      "/".extraConfig = ''
 | 
						|
        try_files $uri $uri/ /index.php?$args;
 | 
						|
      '';
 | 
						|
 | 
						|
      "~ \\.php$".extraConfig = ''
 | 
						|
        include ${config.services.nginx.package}/conf/fastcgi_params;
 | 
						|
 | 
						|
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
 | 
						|
        fastcgi_pass unix:${config.services.phpfpm.pools.www-kinealbrigtsen-no.socket};
 | 
						|
      '';
 | 
						|
 | 
						|
      "~ /\\.ht".extraConfig = ''
 | 
						|
        deny all;
 | 
						|
      '';
 | 
						|
 | 
						|
      "/favicon.ico".extraConfig = ''
 | 
						|
        log_not_found off;
 | 
						|
        access_log off;
 | 
						|
      '';
 | 
						|
 | 
						|
      "/robots.txt".extraConfig = ''
 | 
						|
        allow all;
 | 
						|
        log_not_found off;
 | 
						|
        access_log off;
 | 
						|
      '';
 | 
						|
 | 
						|
      "~* \\.(js|css|png|jpg|jpeg|gif|ico)$".extraConfig =  ''
 | 
						|
        expires max;
 | 
						|
        log_not_found off;
 | 
						|
      '';
 | 
						|
    };
 | 
						|
    extraConfig = ''
 | 
						|
      index index.php index.html;
 | 
						|
      set_real_ip_from 192.168.11.0/24;
 | 
						|
      real_ip_header X-Forwarded-For;
 | 
						|
 | 
						|
      add_header 'Referrer-Policy' 'origin-when-cross-origin';
 | 
						|
      add_header X-Frame-Options DENY;
 | 
						|
      add_header X-Content-Type-Options nosniff;
 | 
						|
    '';
 | 
						|
  };
 | 
						|
 | 
						|
  # TODO:
 | 
						|
  # - Configure a mailer so wp_mail() works
 | 
						|
  # - Enable periodic backups
 | 
						|
}
 |