
The server no longer has files uploaded to it. Instead it is more accurate to refer to it as dealing with "previews" of PRs.
104 lines
2.9 KiB
Plaintext
104 lines
2.9 KiB
Plaintext
# Redirect all HTTP traffic to HTTPS
|
|
server {
|
|
server_name _;
|
|
|
|
listen {{$AIO_NGINX_PORT_HTTP}} default_server;
|
|
listen [::]:{{$AIO_NGINX_PORT_HTTP}};
|
|
|
|
access_log {{$AIO_NGINX_LOGS_DIR}}/access.log;
|
|
error_log {{$AIO_NGINX_LOGS_DIR}}/error.log;
|
|
|
|
# Ideally we want 308 (permanent + keep original method),
|
|
# but it is relatively new and not supported by some clients (e.g. cURL).
|
|
return 307 https://$host:{{$AIO_NGINX_PORT_HTTPS}}$request_uri;
|
|
}
|
|
|
|
# Serve PR-preview requests
|
|
server {
|
|
server_name "~^pr(?<pr>[1-9][0-9]*)-(?<sha>[0-9a-f]{7,40})\.";
|
|
|
|
listen {{$AIO_NGINX_PORT_HTTPS}} ssl http2;
|
|
listen [::]:{{$AIO_NGINX_PORT_HTTPS}} ssl http2;
|
|
|
|
ssl_certificate {{$AIO_LOCALCERTS_DIR}}/{{$AIO_DOMAIN_NAME}}.crt;
|
|
ssl_certificate_key {{$AIO_LOCALCERTS_DIR}}/{{$AIO_DOMAIN_NAME}}.key;
|
|
ssl_prefer_server_ciphers on;
|
|
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
|
|
|
|
root {{$AIO_BUILDS_DIR}}/$pr/$sha;
|
|
disable_symlinks on from=$document_root;
|
|
index index.html;
|
|
|
|
gzip on;
|
|
gzip_comp_level 7;
|
|
gzip_types *;
|
|
|
|
access_log {{$AIO_NGINX_LOGS_DIR}}/access.log;
|
|
error_log {{$AIO_NGINX_LOGS_DIR}}/error.log;
|
|
|
|
location "~/[^/]+\.[^/]+$" {
|
|
try_files $uri $uri/ =404;
|
|
}
|
|
|
|
location / {
|
|
try_files $uri $uri/ /index.html =404;
|
|
}
|
|
}
|
|
|
|
# Handle all other requests
|
|
server {
|
|
server_name _;
|
|
|
|
listen {{$AIO_NGINX_PORT_HTTPS}} ssl http2 default_server;
|
|
listen [::]:{{$AIO_NGINX_PORT_HTTPS}} ssl http2;
|
|
|
|
ssl_certificate {{$AIO_LOCALCERTS_DIR}}/{{$AIO_DOMAIN_NAME}}.crt;
|
|
ssl_certificate_key {{$AIO_LOCALCERTS_DIR}}/{{$AIO_DOMAIN_NAME}}.key;
|
|
ssl_prefer_server_ciphers on;
|
|
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
|
|
|
|
access_log {{$AIO_NGINX_LOGS_DIR}}/access.log;
|
|
error_log {{$AIO_NGINX_LOGS_DIR}}/error.log;
|
|
|
|
# Health check
|
|
location "~^/health-check/?$" {
|
|
add_header Content-Type text/plain;
|
|
return 200 '';
|
|
}
|
|
|
|
# Notify about CircleCI builds
|
|
location "~^/circle-build/?$" {
|
|
if ($request_method != "POST") {
|
|
add_header Allow "POST";
|
|
return 405;
|
|
}
|
|
|
|
proxy_pass_request_headers on;
|
|
proxy_redirect off;
|
|
proxy_method POST;
|
|
proxy_pass http://{{$AIO_PREVIEW_SERVER_HOSTNAME}}:{{$AIO_PREVIEW_SERVER_PORT}}$request_uri;
|
|
|
|
resolver 127.0.0.1;
|
|
}
|
|
|
|
# Notify about PR changes
|
|
location "~^/pr-updated/?$" {
|
|
if ($request_method != "POST") {
|
|
add_header Allow "POST";
|
|
return 405;
|
|
}
|
|
|
|
proxy_pass_request_headers on;
|
|
proxy_redirect off;
|
|
proxy_method POST;
|
|
proxy_pass http://{{$AIO_PREVIEW_SERVER_HOSTNAME}}:{{$AIO_PREVIEW_SERVER_PORT}}$request_uri;
|
|
|
|
resolver 127.0.0.1;
|
|
}
|
|
|
|
# Everything else
|
|
location / {
|
|
return 404;
|
|
}
|
|
}
|