
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!3DES';
ssl_dhparam /etc/nginx/ssl/dh_params.pem;
ssl_session_cache shared:SSL:10m;

ssl_certificate         /etc/nginx/ssl/skia_org.pem;
ssl_certificate_key     /etc/nginx/ssl/skia_org.key;

# Keep these marginally longer than the 600s we keep the GCE HTTPS Load Balancer.
proxy_connect_timeout       620s;
proxy_send_timeout          620s;
proxy_read_timeout          620s;
send_timeout                620s;

# Include the proxied host into the combined log format.
log_format combined_proxy '$remote_addr - $remote_user [$time_local] '
                          '"$request" $status $body_bytes_sent '
                          '"$http_referer" "$http_user_agent" '
                          'upstream=$upstream_response_time '
                          '"$proxy_host"';

##
# Global Headers
##
# Enable HSTS.
add_header Strict-Transport-Security "max-age=31536000; preload;";
# Enforce browser XSS protection
add_header X-XSS-Protection "1; mode=block";
# Disable content sniffing
add_header X-Content-Type-Options "nosniff";

# Prevent clickjacking.
# add_header X-Frame-Options "SAMEORIGIN" always;

#####   skia.org   ################################
server {
    listen      443 default_server;
    server_name skia.org www.skia.org;

    ssl on;

    access_log /var/log/nginx/skia.access.log;
    error_log /var/log/nginx/skia.error.log error;

    if ( $host != 'skia.org' ) {
        rewrite ^/(.*)$ https://skia.org/$1 permanent;
    }

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}

server {
    listen      80 default_server;
    server_name skia.org www.skia.org "";
    return 301 https://skia.org$request_uri;
}

#####   contest.skia.org   ###########################
server {
    listen      443;
    server_name contest.skia.org;

    ssl on;

    access_log /var/log/nginx/contest.access.log;
    error_log /var/log/nginx/contest.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name contest.skia.org;
    return 301 https://contest.skia.org$request_uri;
}

#####   perf.skia.org   ###########################
server {
    listen      443;
    server_name perf.skia.org;

    ssl on;

    access_log /var/log/nginx/perf.access.log;
    error_log /var/log/nginx/perf.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name perf.skia.org;
    return 301 https://perf.skia.org$request_uri;
}

#####   android-perf.skia.org (REDIRECT)   ###########################
server {
    listen 80;
    listen 443 ssl;

    server_name android-perf.skia.org;

    return 301 https://android-master-perf.skia.org$request_uri;

    access_log /var/log/nginx/android-perf.access.log;
    error_log /var/log/nginx/android-perf.error.log error;
}

#####   android-master-ingest.skia.org   ###########################
server {
    listen      443;
    server_name android-master-ingest.skia.org;

    ssl on;

    access_log /var/log/nginx/android-master-ingest.access.log;
    error_log /var/log/nginx/android-master-ingest.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name android-master-ingest.skia.org;
    return 301 https://android-master-ingest.skia.org$request_uri;
}

#####   android-master-perf.skia.org   ###########################
server {
    listen      443;
    server_name android-master-perf.skia.org;

    ssl on;

    access_log /var/log/nginx/android-master-perf.access.log;
    error_log /var/log/nginx/android-master-perf.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name android-master-perf.skia.org;
    return 301 https://android-master-perf.skia.org$request_uri;
}

#####   gold.skia.org   ###########################
server {
    listen      443;
    server_name gold.skia.org;

    ssl on;

    access_log /var/log/nginx/gold.access.log combined_proxy;
    error_log /var/log/nginx/gold.error.log error;

    client_max_body_size 100M;

    location /_/hashes {
      proxy_pass https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt;
    }

    # Serve images directly from the diff server.
    location /img/ {
      proxy_pass http://skia-diffserver-prod:8001;
      proxy_set_header Host $host;
    }

    location /json/trstatus {
        proxy_pass http://skia-gold-prod:19000;
        proxy_set_header Host $host;
    }

    location / {
        proxy_pass http://skia-gold-prod:8001;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name gold.skia.org;
    return 301 https://gold.skia.org$request_uri;
}

#####   public-gold.skia.org   ###########################
server {
    listen      443;
    server_name public-gold.skia.org;

    ssl on;

    access_log /var/log/nginx/public-gold.access.log combined_proxy;
    error_log /var/log/nginx/public-gold.error.log error;

    client_max_body_size 100M;

    # Serve images directly from the diff server.
    location /img/ {
      proxy_pass http://skia-diffserver-prod:8001;
      proxy_set_header Host $host;
    }

    location / {
        proxy_pass http://skia-gold-public:8001;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name public-gold.skia.org;
    return 301 https://public-gold.skia.org$request_uri;
}

#####   gold-stage.skia.org   ###########################
server {
    listen      443;
    server_name gold-stage.skia.org;

    ssl on;

    access_log /var/log/nginx/gold-stage.access.log combined_proxy;
    error_log /var/log/nginx/gold-stage.error.log error;

    client_max_body_size 100M;

    location /_/hashes {
      proxy_pass https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt;
    }

    # Serve images directly from the diff server.
    location /img/ {
      proxy_pass http://skia-diffserver-stage:8001;
      proxy_set_header Host $host;
    }

    # TODO(stephana): Resolve accessing Gold from Gerrit with authentication and
    # remove this rewrite rule. Right now this for testing only.
    location /json/tryjobs/ {
        proxy_pass http://skia-gold-stage:19000;
        proxy_set_header Host $host;
    }

    location / {
        proxy_pass http://skia-gold-stage:8001;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name gold-stage.skia.org;
    return 301 https://gold-stage.skia.org$request_uri;
}

#####   pdfium-gold.skia.org   #####################
server {
    listen      443;
    server_name pdfium-gold.skia.org;

    ssl on;

    access_log /var/log/nginx/pdfium-gold.access.log;
    error_log /var/log/nginx/pdfium-gold.error.log error;

    client_max_body_size 100M;

    location /_/hashes {
      proxy_pass https://storage.googleapis.com/skia-infra-gm/hash_files/gold-pdfium-hashes.txt;
    }

    location / {
        proxy_pass http://skia-gold-pdfium:8001;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name pdfium-gold.skia.org;
    return 301 https://pdfium-gold.skia.org$request_uri;
}

#####   chrome-vr-gold.skia.org   #####################
server {
    listen      443;
    server_name chrome-vr-gold.skia.org;

    ssl on;

    access_log /var/log/nginx/chromevr-gold.access.log;
    error_log /var/log/nginx/chromevr-gold.error.log error;

    client_max_body_size 100M;

    location /_/hashes {
      proxy_pass https://storage.googleapis.com/skia-chromevr-gm/hash_files/gold-chromevr-hashes.txt;
    }

    location / {
        proxy_pass http://skia-gold-chromevr:8001;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name chrome-vr-gold.skia.org;
    return 301 https://chrome-vr-gold.skia.org$request_uri;
}

#####   afdo-chromium-roll.skia.org   ###########################
server {
    listen      443;
    server_name afdo-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/afdo-chromium-autoroll;
}
server {
    listen      80;
    server_name afdo-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/afdo-chromium-autoroll;
}

#####   autoroll.skia.org   ###########################
server {
    listen      443;
    server_name autoroll.skia.org;

    ssl on;

    access_log /var/log/nginx/autoroll.access.log;
    error_log /var/log/nginx/autoroll.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name autoroll.skia.org;
    return 301 https://autoroll.skia.org$request_uri;
}

#####   autoroll-internal.skia.org   ###########################
server {
    listen      443;
    server_name autoroll-internal.skia.org;

    ssl on;

    access_log /var/log/nginx/autoroll-internal.access.log;
    error_log /var/log/nginx/autoroll-internal.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name autoroll-internal.skia.org;
    return 301 https://autoroll-internal.skia.org$request_uri;
}

#####   android-master-roll.skia.org   ###########################
server {
    listen      443;
    server_name android-master-roll.skia.org;
    return 301 https://autoroll-internal.skia.org/r/android-master-autoroll;
}
server {
    listen      80;
    server_name android-master-roll.skia.org;
    return 301 https://autoroll-internal.skia.org/r/android-master-autoroll;
}

#####   android-next-roll.skia.org   ###########################
server {
    listen      443;
    server_name android-next-roll.skia.org;
    return 301 https://autoroll-internal.skia.org/r/android-next-autoroll;
}
server {
    listen      80;
    server_name android-next-roll.skia.org;
    return 301 https://autoroll-internal.skia.org/r/android-next-autoroll;
}


#####   android-o-roll.skia.org   ###########################
server {
    listen      443;
    server_name android-o-roll.skia.org;
    return 301 https://autoroll-internal.skia.org/r/android-o-autoroll;
}
server {
    listen      80;
    server_name android-o-roll.skia.org;
    return 301 https://autoroll-internal.skia.org/r/android-o-autoroll;
}


#####   angle-chromium-roll.skia.org   ###########################
server {
    listen      443;
    server_name angle-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/angle-chromium-autoroll;
}
server {
    listen      80;
    server_name angle-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/angle-chromium-autoroll;
}


#####   angle-skia-roll.skia.org   ###########################
server {
    listen      443;
    server_name angle-skia-roll.skia.org;
    return 301 https://autoroll.skia.org/r/angle-skia-autoroll;
}
server {
    listen      80;
    server_name angle-skia-roll.skia.org;
    return 301 https://autoroll.skia.org/r/angle-skia-autoroll;
}

#####   catapult-roll.skia.org   ###########################
server {
    listen      443;
    server_name catapult-roll.skia.org;
    return 301 https://autoroll.skia.org/r/catapult-autoroll;
}
server {
    listen      80;
    server_name catapult-roll.skia.org;
    return 301 https://autoroll.skia.org/r/catapult-autoroll;
}

#####   chromite-chromium-roll.skia.org   ###########################
server {
    listen      443;
    server_name chromite-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/chromite-chromium-autoroll;
}
server {
    listen      80;
    server_name chromite-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/chromite-chromium-autoroll;
}

#####   chromium-skia-roll.skia.org   ###########################
server {
    listen      443;
    server_name chromium-skia-roll.skia.org;
    return 301 https://autoroll.skia.org/r/chromium-skia-autoroll;
}
server {
    listen      80;
    server_name chromium-skia-roll.skia.org;
    return 301 https://autoroll.skia.org/r/chromium-skia-autoroll;
}

#####   depot-tools-chromium-roll.skia.org   ###########################
server {
    listen      443;
    server_name depot-tools-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/depot-tools-chromium-autoroll;
}
server {
    listen      80;
    server_name depot-tools-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/depot-tools-chromium-autoroll;
}

#####   flutter-engine-flutter-roll.skia.org   ###########################
server {
    listen      443;
    server_name flutter-engine-flutter-roll.skia.org;
    return 301 https://autoroll.skia.org/r/flutter-engine-flutter-autoroll;
}
server {
    listen      80;
    server_name flutter-engine-flutter-roll.skia.org;
    return 301 https://autoroll.skia.org/r/flutter-engine-flutter-autoroll;
}

#####   google3-roll.skia.org   ###########################
server {
    listen      443;
    server_name google3-roll.skia.org;

    ssl on;

    access_log /var/log/nginx/google3-roll.access.log;
    error_log /var/log/nginx/google3-roll.error.log error;

    # Enforce browser XSS protection
    add_header X-XSS-Protection "1; mode=block";
    # Disable content sniffing
    add_header X-Content-Type-Options nosniff;

    location /json/roll {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
    location / {
        return 301 https://autoroll-internal.skia.org/r/google3-autoroll;
    }
}
server {
    listen      80;
    server_name google3-roll.skia.org;
    return 301 https://autoroll-internal.skia.org/r/google3-autoroll;
}

#####   lottie-web-lottie-ci-roll.skia.org   ###########################
server {
    listen      443;
    server_name lottie-web-lottie-ci-roll.skia.org;
    return 301 https://autoroll.skia.org/r/lottie-web-lottie-ci-autoroll;
}
server {
    listen      80;
    server_name lottie-web-lottie-ci-roll.skia.org;
    return 301 https://autoroll.skia.org/r/lottie-web-lottie-ci-autoroll;
}

#####   nacl-roll.skia.org   ###########################
server {
    listen      443;
    server_name nacl-roll.skia.org;
    return 301 https://autoroll.skia.org/r/nacl-autoroll;
}
server {
    listen      80;
    server_name nacl-roll.skia.org;
    return 301 https://autoroll.skia.org/r/nacl-autoroll;
}

#####   pdfium-roll.skia.org   ###########################
server {
    listen      443;
    server_name pdfium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/pdfium-autoroll;
}
server {
    listen      80;
    server_name pdfium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/pdfium-autoroll;
}

#####   perfetto-chromium-roll.skia.org   ###########################
server {
    listen      443;
    server_name perfetto-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/perfetto-chromium-autoroll;
}
server {
    listen      80;
    server_name perfetto-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/perfetto-chromium-autoroll;
}

#####   fuchsia-roll.skia.org   ###########################
server {
    listen      443;
    server_name fuchsia-roll.skia.org;
    return 301 https://autoroll.skia.org/r/fuchsia-autoroll;
}
server {
    listen      80;
    server_name fuchsia-roll.skia.org;
    return 301 https://autoroll.skia.org/r/fuchsia-autoroll;
}

#####   fuchsia-sdk-chromium-roll.skia.org   ###########################
server {
    listen      443;
    server_name fuchsia-sdk-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/fuchsia-sdk-chromium-autoroll;
}
server {
    listen      80;
    server_name fuchsia-sdk-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/fuchsia-sdk-chromium-autoroll;
}

#####   skcms-skia-roll.skia.org   ###########################
server {
    listen      443;
    server_name skcms-skia-roll.skia.org;
    return 301 https://autoroll.skia.org/r/skcms-skia-autoroll;
}
server {
    listen      80;
    server_name skcms-skia-roll.skia.org;
    return 301 https://autoroll.skia.org/r/skcms-skia-autoroll;
}

#####   skia-flutter-roll.skia.org   ###########################
server {
    listen      443;
    server_name skia-flutter-roll.skia.org;
    return 301 https://autoroll.skia.org/r/skia-flutter-autoroll;
}
server {
    listen      80;
    server_name skia-flutter-roll.skia.org;
    return 301 https://autoroll.skia.org/r/skia-flutter-autoroll;
}

#####   skia-lottie-ci-roll.skia.org   ###########################
server {
    listen      443;
    server_name skia-lottie-ci-roll.skia.org;
    return 301 https://autoroll.skia.org/r/skia-lottie-ci-autoroll;
}
server {
    listen      80;
    server_name skia-lottie-ci-roll.skia.org;
    return 301 https://autoroll.skia.org/r/skia-lottie-ci-autoroll;
}

#####   spirv-headers-chromium-roll.skia.org   ###########################
server {
    listen      443;
    server_name spirv-headers-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/spirv-headers-chromium-autoroll;
}
server {
    listen      80;
    server_name spirv-headers-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/spirv-headers-chromium-autoroll;
}

#####   spirv-tools-chromium-roll.skia.org   ###########################
server {
    listen      443;
    server_name spirv-tools-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/spirv-tools-chromium-autoroll;
}
server {
    listen      80;
    server_name spirv-tools-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/spirv-tools-chromium-autoroll;
}

#####   src-internal-chromium-roll.skia.org   ###########################
server {
    listen      443;
    server_name src-internal-chromium-roll.skia.org;
    return 301 https://autoroll-internal.skia.org/r/src-internal-chromium-autoroll;
}
server {
    listen      80;
    server_name src-internal-chromium-roll.skia.org;
    return 301 https://autoroll-internal.skia.org/r/src-internal-chromium-autoroll;
}

#####   swiftshader-skia-roll.skia.org   ###########################
server {
    listen      443;
    server_name swiftshader-skia-roll.skia.org;
    return 301 https://autoroll.skia.org/r/swiftshader-skia-autoroll;
}
server {
    listen      80;
    server_name swiftshader-skia-roll.skia.org;
    return 301 https://autoroll.skia.org/r/swiftshader-skia-autoroll;
}

#####   webrtc-chromium-roll.skia.org   ###########################
server {
    listen      443;
    server_name webrtc-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/webrtc-chromium-autoroll;
}
server {
    listen      80;
    server_name webrtc-chromium-roll.skia.org;
    return 301 https://autoroll.skia.org/r/webrtc-chromium-autoroll;
}

#####   mon.skia.org   ###########################
server {
    listen      443;
    server_name mon.skia.org;

    ssl on;

    access_log /var/log/nginx/mon.access.log;
    error_log /var/log/nginx/mon.error.log error;

    location / {
        proxy_pass http://skia-monitoring:8000;
        proxy_set_header Host $host;
    }
}

server {
    listen      80;
    server_name mon.skia.org;
    return 301 https://mon.skia.org$request_uri;
}

#####   metrics.skia.org   ###########################
# This rule allows Skolo and Golo bots to report graphite metrics over https.
server {
    listen      443;
    server_name metrics.skia.org;

    ssl on;

    access_log /var/log/nginx/metrics.access.log;
    error_log /var/log/nginx/metrics.error.log error;

    location / {
        proxy_pass http://skia-monitoring:10117;
        proxy_set_header Host $host;
        # Skolo primary public IP TODO(kjlubick) Remove after transition
        allow 216.239.33.118/32;
        # Skolo secondary public IP TODO(kjlubick) Remove after transition
        allow 216.239.33.70/32;
        # Skolo new primary public IP
        allow 104.132.164.0/24;
         # Golo public IP
        allow 74.125.248.64/27;
        deny  all;
    }
}


#####   push.skia.org   ###########################
server {
    listen      443;
    server_name push.skia.org;

    ssl on;

    access_log /var/log/nginx/push.access.log;
    error_log /var/log/nginx/push.error.log error;

    location / {
        proxy_pass http://skia-push:8000;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name push.skia.org;
    return 301 https://push.skia.org$request_uri;
}

#####   fiddle.skia.org   ###########################
server {
    listen      443;
    server_name fiddle.skia.org;

    ssl on;

    access_log /var/log/nginx/fiddle.access.log;
    error_log /var/log/nginx/fiddle.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name fiddle.skia.org;
    return 301 https://fiddle.skia.org$request_uri;
}

#####   fuzzer.skia.org   ###########################
server {
    listen      443;
    server_name fuzzer.skia.org;

    ssl on;

    access_log /var/log/nginx/fuzzer.access.log;
    error_log /var/log/nginx/fuzzer.error.log error;

    location / {
        proxy_pass http://skia-fuzzer-fe:8001;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name fuzzer.skia.org;
    return 301 https://fuzzer.skia.org$request_uri;
}

####   health.skia.org   ################
# Just return empty 200 responses for network load balancing health checks.
# See https://cloud.google.com/compute/docs/load-balancing/health-checks
server {
    listen      80;
    server_name health.skia.org;

    access_log /var/log/nginx/health.access.log;
    error_log /var/log/nginx/health.error.log error;

    location / {
      return 200;
    }
}

#####   status.skia.org   ###########################
server {
    listen      443;
    server_name status.skia.org;

    ssl on;

    access_log /var/log/nginx/status.access.log;
    error_log /var/log/nginx/status.error.log error;

    location / {
        proxy_pass http://skia-status:8002;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name status.skia.org;
    return 301 https://status.skia.org$request_uri;
}

#####   status-internal.skia.org   ###########################
server {
    listen      443;
    server_name status-internal.skia.org;

    ssl on;

    access_log /var/log/nginx/status-internal.access.log;
    error_log /var/log/nginx/status-internal.error.log error;

    location / {
        proxy_pass http://skia-proxy:8000;
        proxy_set_header Host "skia-status-internal-8002-proxy.skia.org";
    }
}
server {
    listen      80;
    server_name status-internal.skia.org;
    return 301 https://status-internal.skia.org$request_uri;
}

#####   status-staging.skia.org   ###########################
server {
    listen      443;
    server_name status-staging.skia.org;

    ssl on;

    access_log /var/log/nginx/status-staging.access.log;
    error_log /var/log/nginx/status-staging.error.log error;

    location / {
        proxy_pass http://skia-status-staging:8002;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name status-staging.skia.org;
    return 301 https://status-staging.skia.org$request_uri;
}

#####   go.skia.org   ###########################
server {
    listen      443;
    server_name go.skia.org;

    ssl on;

    access_log /var/log/nginx/go.access.log;
    error_log /var/log/nginx/go.error.log error;

    location / {
        add_header Content-Type text/html;
        return 200 '<meta name="go-import" content="go.skia.org/infra git https://skia.googlesource.com/buildbot">';
    }
}

#####   ct.skia.org   ###########################
server {
    listen      443;
    server_name ct.skia.org;

    ssl on;

    access_log /var/log/nginx/ct.access.log;
    error_log /var/log/nginx/ct.error.log error;

    client_max_body_size 50M;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name ct.skia.org;
    return 301 https://ct.skia.org$request_uri;
}

#####   skbug.com (REDIRECT)   ###########################
server {
    listen 80;
    server_name skbug.com;

    access_log /var/log/nginx/sk-bug.access.log;
    error_log /var/log/nginx/sk-bug.error.log error;

    rewrite ^/([0-9]+)$ https://bugs.chromium.org/p/skia/issues/detail?id=$1 redirect;
    rewrite ^ https://bugs.chromium.org/p/skia/issues/list redirect;
}

#####   bug.skia.org (REDIRECT)   ###########################
server {
    listen 443;
    server_name bug.skia.org;

    ssl on;

    access_log /var/log/nginx/bug.access.log;
    error_log /var/log/nginx/bug.error.log error;

    # Note: nginx automatically appends the incoming query parameters to the redirect URL.
    rewrite ^/p/skia/issues/detail(/?)$ https://bugs.chromium.org/p/skia/issues/detail redirect;
    rewrite ^/p/skia/issues/list(/?)$ https://bugs.chromium.org/p/skia/issues/list redirect;
    rewrite ^/p/skia(.*) https://skia.org? redirect;
    rewrite ^/([0-9]+)$ https://bugs.chromium.org/p/skia/issues/detail?id=$1 redirect;
    rewrite ^ https://bugs.chromium.org/p/skia/issues/list redirect;
}

server {
    listen 80;
    server_name bug.skia.org;
    return 301 https://bug.skia.org$request_uri;
}

#####   bugs.skia.org (REDIRECT)   ##########################
# (People have trouble remembering if they should type "bug" or "bugs.")
server {
    listen 443;
    server_name bugs.skia.org;

    ssl on;

    access_log /var/log/nginx/bugs.access.log;
    error_log /var/log/nginx/bugs.error.log error;

    # Note: nginx automatically appends the incoming query parameters to the redirect URL.
    rewrite ^/p/skia/issues/detail(/?)$ https://bugs.chromium.org/p/skia/issues/detail redirect;
    rewrite ^/p/skia/issues/list(/?)$ https://bugs.chromium.org/p/skia/issues/list redirect;
    rewrite ^/p/skia(.*) https://skia.org? redirect;
    rewrite ^/([0-9]+)$ https://bugs.chromium.org/p/skia/issues/detail?id=$1 redirect;
    rewrite ^ https://bugs.chromium.org/p/skia/issues/list redirect;
}

server {
    listen 80;
    server_name bugs.skia.org;
    return 301 https://bugs.skia.org$request_uri;
}

#####   code.skia.org (REDIRECT)   ###########################
server {
    listen 443;

    ssl on;

    access_log /var/log/nginx/code.access.log;
    error_log /var/log/nginx/code.error.log error;

    server_name code.skia.org;
    rewrite ^ https://skia.googlesource.com/skia redirect;
}

server {
    listen 80;
    server_name code.skia.org;
    rewrite ^ https://skia.googlesource.com/skia redirect;
}

#####   review.skia.org (REDIRECT)   ###########################
server {
    listen 443;
    server_name review.skia.org;

    ssl on;

    access_log /var/log/nginx/review.access.log;
    error_log /var/log/nginx/review.error.log error;

    # Note: nginx automatically appends the incoming query parameters to the redirect URL.
    rewrite ^/([0-9]+)$ https://skia-review.googlesource.com/c/$1/ redirect;
    rewrite ^ https://skia-review.googlesource.com redirect;
}

server {
    listen 80;
    server_name review.skia.org;
    return 301 https://review.skia.org$request_uri;
}

#####   reviews.skia.org (REDIRECT)   ##########################
# (People have trouble remembering if they should type "review" or "reviews.")
server {
    listen 443;
    server_name reviews.skia.org;

    ssl on;

    access_log /var/log/nginx/reviews.access.log;
    error_log /var/log/nginx/reviews.error.log error;

    # Note: nginx automatically appends the incoming query parameters to the redirect URL.
    rewrite ^/([0-9]+)$ https://skia-review.googlesource.com/c/$1/ redirect;
    rewrite ^ https://skia-review.googlesource.com redirect;
}

server {
    listen 80;
    server_name reviews.skia.org;
    return 301 https://reviews.skia.org$request_uri;
}


#####   cs.skia.org (REDIRECT)   ###########################
server {
    listen 443;
    server_name cs.skia.org;

    ssl on;

    access_log /var/log/nginx/cs.access.log;
    error_log /var/log/nginx/cs.error.log error;

    rewrite ^/(.+)$ https://code.google.com/p/chromium/codesearch#search/&q=$1%20file:%5Esrc/third_party/skia/&sq=package:chromium redirect;
    rewrite ^ https://code.google.com/p/chromium/codesearch#chromium/src/third_party/skia/ redirect;
}
server {
    listen 80;
    server_name cs.skia.org;
    rewrite ^/(.+)$ https://code.google.com/p/chromium/codesearch#search/&q=$1%20file:%5Esrc/third_party/skia/&sq=package:chromium redirect;
    rewrite ^ https://code.google.com/p/chromium/codesearch#chromium/src/third_party/skia/ redirect;
}

#####   task-scheduler.skia.org   ###########################
server {
    listen      443;
    server_name task-scheduler.skia.org;

    ssl on;

    access_log /var/log/nginx/task-scheduler.access.log;
    error_log /var/log/nginx/task-scheduler.error.log error;

    location / {
        proxy_pass http://skia-task-scheduler:8000;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name task-scheduler.skia.org;
    return 301 https://task-scheduler.skia.org$request_uri;
}

#####   task-scheduler-internal.skia.org   ###########################
server {
    listen      443;
    server_name task-scheduler-internal.skia.org;

    ssl on;

    access_log /var/log/nginx/task-scheduler-internal.access.log;
    error_log /var/log/nginx/task-scheduler-internal.error.log error;

    location / {
        proxy_pass http://skia-proxy:8000;
        proxy_set_header Host "skia-task-scheduler-internal-8000-proxy.skia.org";
    }
    location /google2c59f97e1ced9fdc.html {
        add_header Content-Type text/html;
        return 200 'google-site-verification: google2c59f97e1ced9fdc.html';
    }
    location /pubsub/ {
        proxy_pass http://skia-task-scheduler-internal:8000;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name task-scheduler-internal.skia.org;
    return 301 https://task-scheduler-internal.skia.org$request_uri;
}

#####   task-scheduler-staging.skia.org   ###########################
server {
    listen      443;
    server_name task-scheduler-staging.skia.org;

    ssl on;

    access_log /var/log/nginx/task-scheduler-staging.access.log;
    error_log /var/log/nginx/task-scheduler-staging.error.log error;

    location / {
        proxy_pass http://skia-task-scheduler-staging:8000;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name task-scheduler-staging.skia.org;
    return 301 https://task-scheduler-staging.skia.org$request_uri;
}

#####   prom.skia.org   ###########################
server {
    listen      443;
    server_name prom.skia.org;

    ssl on;

    access_log /var/log/nginx/prom.access.log;
    error_log /var/log/nginx/prom.error.log error;

    client_max_body_size 500M;

    location / {
        proxy_pass http://skia-prom:8002;
        proxy_set_header Host $host;
    }
}

server {
    listen      80;
    server_name prom.skia.org;
    return 301 https://prom.skia.org$request_uri;
}

#####   webhooks.skia.org   ###########################
server {
    listen      443;
    server_name webhooks.skia.org;

    ssl on;

    access_log /var/log/nginx/webhooks.access.log;
    error_log /var/log/nginx/webhooks.error.log error;

    client_max_body_size 500M;

    location / {
        proxy_pass http://skia-prom:8005;
        proxy_set_header Host $host;
    }
}

server {
    listen      80;
    server_name webhooks.skia.org;
    return 301 https://webhooks.skia.org$request_uri;
}

#####   proxy.skia.org   ###########################
#
# proxy.skia.org is different than most other rules because it matches regexs
# on the first part of the host.
#
server {
    listen      443;
    server_name ~^[a-zA-Z0-9-]+proxy\.skia\.org$;

    ssl on;

    access_log /var/log/nginx/proxy.access.log;
    error_log /var/log/nginx/proxy.error.log error;

    client_max_body_size 500M;

    location / {
        # If there are substantial changes the following 2 lines, be sure to
        # duplicate those changes to the other places where we do
        # a proxy_pass to skia-proxy.
        proxy_pass http://skia-proxy:8000;
        proxy_set_header Host $host;
    }
}

server {
    listen      80;
    server_name ~^[a-zA-Z0-9-]+proxy\.skia\.org$;
    return 301 https://$server_name$request_uri;
}

#####   power.skia.org   ###########################
server {
    listen      443;
    server_name power.skia.org;

    ssl on;

    access_log /var/log/nginx/power-controller.access.log;
    error_log /var/log/nginx/power-controller.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name power.skia.org;
    return 301 https://power.skia.org$request_uri;
}

#####   ctpixeldiff.skia.org   ###########################
server {
    listen      443;
    server_name ctpixeldiff.skia.org;

    ssl on;

    access_log /var/log/nginx/ctpixeldiff.access.log;
    error_log /var/log/nginx/ctpixeldiff.error.log error;

    location / {
        proxy_pass http://skia-ct-pixel-diff:8000;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name ctpixeldiff.skia.org;
    return 301 https://ctpixeldiff.skia.org$request_uri;
}

#####   leasing.skia.org   ###########################
server {
    listen      443;
    server_name leasing.skia.org;

    ssl on;

    access_log /var/log/nginx/leasing.access.log;
    error_log /var/log/nginx/leasing.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name leasing.skia.org;
    return 301 https://leasing.skia.org$request_uri;
}

#####   jsdoc.skia.org   ###########################
server {
    listen      443;
    server_name jsdoc.skia.org;

    ssl on;

    access_log /var/log/nginx/jsdoc.access.log;
    error_log /var/log/nginx/jsdoc.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name jsdoc.skia.org;
    return 301 https://jsdoc.skia.org$request_uri;
}

#
#
#
# Entries below here are running on skia-public
#
#
#

#####   prom2.skia.org   ###########################
server {
    listen      443;
    server_name prom2.skia.org;

    ssl on;

    access_log /var/log/nginx/prom2.access.log;
    error_log /var/log/nginx/prom2.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name prom2.skia.org;
    return 301 https://prom2.skia.org$request_uri;
}

#####   grafana2.skia.org   ###########################
server {
    listen      443;
    server_name grafana2.skia.org;

    ssl on;

    access_log /var/log/nginx/grafana2.access.log;
    error_log /var/log/nginx/grafana2.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name grafana2.skia.org;
    return 301 https://grafana2.skia.org$request_uri;
}

#####   debugger.skia.org   ###########################
server {
    listen      443;
    server_name debugger.skia.org;

    ssl on;

    access_log /var/log/nginx/debugger.access.log;
    error_log /var/log/nginx/debugger.error.log error;

    client_max_body_size 500M;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name debugger.skia.org;
    return 301 https://debugger.skia.org$request_uri;
}
#####   debugger-assets.skia.org   ###########################
server {
    listen      443;
    server_name debugger-assets.skia.org;

    ssl on;

    access_log /var/log/nginx/debugger-assets.access.log;
    error_log /var/log/nginx/debugger-assets.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name debugger-assets.skia.org;
    return 301 https://debugger-assets.skia.org$request_uri;
}
#####   skottie.skia.org   ###########################
server {
    listen      443;
    server_name skottie.skia.org;

    ssl on;

    access_log /var/log/nginx/skottie.access.log;
    error_log /var/log/nginx/skottie.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name skottie.skia.org;
    return 301 https://skottie.skia.org$request_uri;
}
#####   skottie-internal.skia.org   ###########################
server {
    listen      443;
    server_name skottie-internal.skia.org;

    ssl on;

    access_log /var/log/nginx/skottie-internal.access.log;
    error_log /var/log/nginx/skottie-internal.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name skottie-internal.skia.org;
    return 301 https://skottie-internal.skia.org$request_uri;
}
#####   status2.skia.org   ###########################
server {
    listen      443;
    server_name status2.skia.org;

    ssl on;

    access_log /var/log/nginx/status2.access.log;
    error_log /var/log/nginx/status2.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name status2.skia.org;
    return 301 https://status2.skia.org$request_uri;
}
#####   named-fiddles.skia.org   ###########################
server {
    listen      443;
    server_name named-fiddles.skia.org;

    ssl on;

    access_log /var/log/nginx/named-fiddles.access.log;
    error_log /var/log/nginx/named-fiddles.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name named-fiddles.skia.org;
    return 301 https://named-fiddles.skia.org$request_uri;
}
#####   am.skia.org   ###########################
server {
    listen      443;
    server_name am.skia.org;

    ssl on;

    access_log /var/log/nginx/am.access.log;
    error_log /var/log/nginx/am.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name am.skia.org;
    return 301 https://am.skia.org$request_uri;
}

#####   lottie-gold.skia.org   ###########################
server {
    listen      443;
    server_name lottie-gold.skia.org;
    ssl on;
    access_log /var/log/nginx/lottie-gold.access.log;
    error_log /var/log/nginx/lottie-gold.error.log error;
    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name lottie-gold.skia.org;
    return 301 https://lottie-gold.skia.org$request_uri;
}

#####   chrome-gpu-gold.skia.org   ###########################
server {
    listen      443;
    server_name chrome-gpu-gold.skia.org;
    ssl on;
    access_log /var/log/nginx/chrome-gpu-gold.access.log;
    error_log /var/log/nginx/chrome-gpu-gold.error.log error;
    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name chrome-gpu-gold.skia.org;
    return 301 https://chrome-gpu-gold.skia.org$request_uri;
}

#####   jsfiddle.skia.org   ###########################
server {
    listen      443;
    server_name jsfiddle.skia.org;

    ssl on;

    access_log /var/log/nginx/jsfiddle.access.log;
    error_log /var/log/nginx/jsfiddle.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name jsfiddle.skia.org;
    return 301 https://jsfiddle.skia.org$request_uri;
}

#####   task-driver.skia.org   ###########################
server {
    listen      443;
    server_name task-driver.skia.org;

    ssl on;

    access_log /var/log/nginx/task-driver.access.log;
    error_log /var/log/nginx/task-driver.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name task-driver.skia.org;
    return 301 https://task-driver.skia.org$request_uri;
}

#####   ct-perf.skia.org   ###########################
server {
    listen      443;
    server_name ct-perf.skia.org;

    ssl on;

    access_log /var/log/nginx/ct-perf.access.log;
    error_log /var/log/nginx/ct-perf.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
    }
}
server {
    listen      80;
    server_name ct-perf.skia.org;
    return 301 https://ct-perf.skia.org$request_uri;
}

#####   collectd.skia.org   ###########################
# This rule allows Skolo and Golo bots to report write_http collectd info over https.
server {
    listen      443;
    server_name collectd.skia.org;

    ssl on;

    access_log /var/log/nginx/collectd.access.log;
    error_log /var/log/nginx/collectd.error.log error;

    location / {
        proxy_pass https://35.201.76.220;
        proxy_set_header Host $host;
        # Skolo new primary public IP
        allow 104.132.164.0/24;
         # Golo public IP
        allow 74.125.248.64/27;
        deny  all;
    }
}

