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