| # The http-redir VM | |
| We use a small VM on GCE to redirect certain HTTP requests to canonical destinations (e.g. \*.bazel.io -> \*.bazel.build). | |
| ## Installation | |
| - Create a new CentOS 7 VM on GCE | |
| - Update everything: `yum upgrade` | |
| - Install nginx: `yum install nginx` | |
| - Configure nginx: | |
| ``` | |
| cat > /etc/nginx/nginx.conf <<'EOF' | |
| user nginx; | |
| worker_processes auto; | |
| error_log /var/log/nginx/error.log; | |
| pid /run/nginx.pid; | |
| events { | |
| worker_connections 1024; | |
| } | |
| http { | |
| include /etc/nginx/mime.types; | |
| default_type application/octet-stream; | |
| # Redirect variations of the main website URL to the canonical one. | |
| server { | |
| listen 80; | |
| server_name bazel.build www.bazel.build bazel.io www.bazel.io; | |
| return 301 https://bazel.build$request_uri; | |
| } | |
| # Redirect http:// to https:// and *.bazel.io to *.bazel.build. | |
| server { | |
| listen 80; | |
| server_name ~^(?<subdomain>.+)\.bazel\.(?<tld>.+)$; | |
| return 301 https://$subdomain.bazel.build$request_uri; | |
| } | |
| # Catch-all default server that just returns an error. | |
| server { | |
| listen 80 default_server; | |
| server_name _; | |
| add_header Content-Type text/plain; | |
| return 200 "Bazel Redirection Service"; | |
| } | |
| } | |
| EOF | |
| ``` | |
| - Enable the nginx service: `systemctl enable nginx` | |
| - Start the nginx service: `systemctl start nginx` |