github.com/blystad/deis@v0.11.0/router/templates/nginx.conf (about)

     1  # required to run in a container
     2  daemon off;
     3  
     4  user www-data;
     5  worker_processes 4;
     6  pid /run/nginx.pid;
     7  
     8  events {
     9      worker_connections 768;
    10      # multi_accept on;
    11  }
    12  
    13  http {
    14      # basic settings
    15      sendfile on;
    16      tcp_nopush on;
    17      tcp_nodelay on;
    18      keepalive_timeout 65;
    19      types_hash_max_size 2048;
    20      server_names_hash_bucket_size 64;
    21  
    22      include /etc/nginx/mime.types;
    23      default_type application/octet-stream;
    24      {{ if .deis_router_gzip }}
    25      gzip {{ .deis_router_gzip }};
    26      gzip_comp_level {{ .deis_router_gzipCompLevel }};
    27      gzip_disable {{ .deis_router_gzipDisable }};
    28      gzip_http_version {{ .deis_router_gzipHttpVersion }};
    29      gzip_types {{ .deis_router_gzipTypes }};
    30      gzip_proxied {{ .deis_router_gzipProxied }};
    31      gzip_vary {{ .deis_router_gzipVary }};{{ end }}
    32  
    33      # send logs to STDOUT so they can be seen using 'docker logs'
    34      access_log /dev/stdout;
    35      error_log /dev/stdout;
    36  
    37      map $http_upgrade $connection_upgrade {
    38          default upgrade;
    39          ''      close;
    40      }
    41  
    42      ## start deis-controller
    43      {{ if .deis_controller_host }}
    44      upstream deis-controller {
    45          server {{ .deis_controller_host }}:{{ .deis_controller_port }};
    46      }
    47  
    48      server {
    49          server_name ~^deis\.(?<domain>.+)$;
    50          server_name_in_redirect off;
    51          port_in_redirect off;
    52  
    53          location / {
    54              proxy_buffering             off;
    55              proxy_set_header            Host $host;
    56              proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
    57              proxy_redirect              off;
    58              proxy_connect_timeout       10s;
    59              proxy_send_timeout          1200s;
    60              proxy_read_timeout          1200s;
    61  
    62              proxy_pass                  http://deis-controller;
    63          }
    64      }{{ end }}
    65      ## end deis-controller
    66  
    67      ## start service definitions for each application
    68      {{ $domains := .deis_domains }}{{ range $service := .deis_services }}{{ if $service.Nodes }}
    69      upstream {{ Base $service.Key }} {
    70          {{ range $upstream := $service.Nodes }}server {{ $upstream.Value }};
    71          {{ end }}
    72      }
    73  
    74      server {
    75          server_name ~^{{ Base $service.Key }}\.(?<domain>.+)${{ range $app_domains := $domains }}{{ if eq (Base $service.Key) (Base $app_domains.Key) }} {{ $app_domains.Value }}{{ end }}{{ end }};
    76  
    77          server_name_in_redirect off;
    78          port_in_redirect off;
    79  
    80          location / {
    81              proxy_buffering             off;
    82              proxy_set_header            Host $host;
    83              proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
    84              proxy_redirect              off;
    85              proxy_connect_timeout       10s;
    86              proxy_send_timeout          1200s;
    87              proxy_read_timeout          1200s;
    88              proxy_http_version          1.1;
    89              proxy_set_header            Upgrade $http_upgrade;
    90              proxy_set_header            Connection $connection_upgrade;
    91  
    92              proxy_next_upstream         error timeout http_502 http_503 http_504;
    93  
    94              add_header                  X-Deis-Upstream $upstream_addr;
    95  
    96              proxy_pass                  http://{{ Base $service.Key }};
    97          }
    98      }
    99      {{ end }}{{ end }}
   100      ## end service definitions for each application
   101  
   102      # healthcheck
   103      server {
   104          listen 80 default_server;
   105          location /health-check {
   106              default_type 'text/plain';
   107              access_log off;
   108              return 200;
   109          }
   110      }
   111  }
   112  
   113  ## start builder
   114  {{ if .deis_builder_host }}
   115  tcp {
   116      access_log /dev/stdout;
   117      tcp_nodelay on;
   118      timeout 1200000;
   119  
   120      # same directive names, but these are in miliseconds...
   121      proxy_connect_timeout       10000;
   122      proxy_send_timeout          1200000;
   123      proxy_read_timeout          1200000;
   124  
   125      upstream builder {
   126          server {{ .deis_builder_host }}:{{ .deis_builder_port }};
   127      }
   128  
   129      server {
   130          listen 2222;
   131          proxy_pass builder;
   132      }
   133  }{{ end }}
   134  ## end builder