summary refs log tree commit diff
path: root/nixos/modules/services/web-servers/nginx
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2017-02-11 04:11:35 +0100
committerRobin Gloster <mail@glob.in>2017-08-30 21:01:52 +0200
commit65c2203ffcedcf4817c590fe82c213dd45602d47 (patch)
tree84b5ba90a7a5b5fcd0d0816aff2c981da7083696 /nixos/modules/services/web-servers/nginx
parent530282eebec47b8e4afc93de8caf607c621fd6cc (diff)
downloadnixlib-65c2203ffcedcf4817c590fe82c213dd45602d47.tar
nixlib-65c2203ffcedcf4817c590fe82c213dd45602d47.tar.gz
nixlib-65c2203ffcedcf4817c590fe82c213dd45602d47.tar.bz2
nixlib-65c2203ffcedcf4817c590fe82c213dd45602d47.tar.lz
nixlib-65c2203ffcedcf4817c590fe82c213dd45602d47.tar.xz
nixlib-65c2203ffcedcf4817c590fe82c213dd45602d47.tar.zst
nixlib-65c2203ffcedcf4817c590fe82c213dd45602d47.zip
nginx module: add option for proxying websocket requests
Diffstat (limited to 'nixos/modules/services/web-servers/nginx')
-rw-r--r--nixos/modules/services/web-servers/nginx/default.nix10
-rw-r--r--nixos/modules/services/web-servers/nginx/location-options.nix9
2 files changed, 19 insertions, 0 deletions
diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix
index 1aa8000502f5..e71a9e1885a8 100644
--- a/nixos/modules/services/web-servers/nginx/default.nix
+++ b/nixos/modules/services/web-servers/nginx/default.nix
@@ -92,6 +92,11 @@ let
         include ${recommendedProxyConfig};
       ''}
 
+      # $connection_upgrade is used for websocket proxying
+      map $http_upgrade $connection_upgrade {
+          default upgrade;
+          '''      close;
+      }
       client_max_body_size ${cfg.clientMaxBodySize};
 
       server_tokens ${if cfg.serverTokens then "on" else "off"};
@@ -213,6 +218,11 @@ let
         proxy_pass ${config.proxyPass};
         ${optionalString cfg.recommendedProxySettings "include ${recommendedProxyConfig};"}
       ''}
+      ${optionalString config.proxyWebsockets ''
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection $connection_upgrade;
+      ''}
       ${optionalString (config.index != null) "index ${config.index};"}
       ${optionalString (config.tryFiles != null) "try_files ${config.tryFiles};"}
       ${optionalString (config.root != null) "root ${config.root};"}
diff --git a/nixos/modules/services/web-servers/nginx/location-options.nix b/nixos/modules/services/web-servers/nginx/location-options.nix
index d6f57404f822..4c772734a749 100644
--- a/nixos/modules/services/web-servers/nginx/location-options.nix
+++ b/nixos/modules/services/web-servers/nginx/location-options.nix
@@ -19,6 +19,15 @@ with lib;
       '';
     };
 
+    proxyWebsockets = mkOption {
+      type = types.bool;
+      default = false;
+      example = true;
+      description = ''
+        Whether to supporty proxying websocket connections with HTTP/1.1.
+      '';
+    };
+
     index = mkOption {
       type = types.nullOr types.str;
       default = null;