diff --git a/docker-compose.yml b/docker-compose.yml index 48f3abc607b03..a2b1a7be2787a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,6 +11,7 @@ services: ports: - ${LOCAL_PORT-8889}:80 + - ${LOCAL_HTTPS_PORT-8890}:443 environment: LOCAL_DIR: ${LOCAL_DIR-src} @@ -18,6 +19,8 @@ services: volumes: - ./tools/local-env/default.template:/etc/nginx/conf.d/default.template - ./:/var/www + - ./tools/local-env/ssl/nginx-selfsigned.crt:/etc/nginx/ssl/nginx-selfsigned.crt + - ./tools/local-env/ssl/nginx-selfsigned.key:/etc/nginx/ssl/nginx-selfsigned.key # Load our config file, substituting environment variables into the config. command: /bin/sh -c "envsubst '$$LOCAL_DIR' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'" diff --git a/tools/local-env/default.template b/tools/local-env/default.template index 995913fb453a2..0efa37f0808ec 100644 --- a/tools/local-env/default.template +++ b/tools/local-env/default.template @@ -36,3 +36,45 @@ server { fastcgi_pass_header Authorization; } } + +server { + index index.php index.html; + + listen 443 ssl; + listen [::]:443 ssl; + + server_name localhost; + + ssl_certificate /etc/nginx/ssl/nginx-selfsigned.crt; + ssl_certificate_key /etc/nginx/ssl/nginx-selfsigned.key; + + client_max_body_size 1g; + + error_log /var/log/nginx/error.log; + access_log /var/log/nginx/access.log; + + root /var/www/${LOCAL_DIR}; + + absolute_redirect off; + + if (!-e $request_filename) { + rewrite /wp-admin$ $scheme://$host$request_uri/ permanent; + rewrite ^(/[^/]+)?(/wp-.*) $2 last; + rewrite ^(/[^/]+)?(/.*\.php) $2 last; + } + + location / { + try_files $uri $uri/ /index.php?$args; + } + + location ~ \.php$ { + try_files $uri =404; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass php:9000; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_pass_header Authorization; + } +} diff --git a/tools/local-env/ssl/nginx-selfsigned.crt b/tools/local-env/ssl/nginx-selfsigned.crt new file mode 100644 index 0000000000000..3f53d45fef0c4 --- /dev/null +++ b/tools/local-env/ssl/nginx-selfsigned.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDazCCAlOgAwIBAgIUVc9X6HR8CB4U9pRyBCkPrE2UoeYwDQYJKoZIhvcNAQEL +BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM +GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNTA1MDgyMzM4MzVaFw0yNjA1 +MDgyMzM4MzVaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw +HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCq19+Fs1og/x0TLHu/zdybDXD/JNBl/tvIB5PbQ1ge +iYXnr0zNUCrnwaiBUCX2aC4nEHpnNeHOp2roVaIY7mImSLau0UV4+sWxQUZHVwRq +Kg+sbzr81vMh6eyttFgITusXj0l2oshGvEaUqPm7tRwZZUgnLA7q0QCq2QoIQunA +pSwutsTdCAxCD52J+8l4WhE0K6qx1QI77WPN5jwapXeNSpmlEvsuG9p8M2G7AvmI +jkxJrzjWnVRPIB9E6fhIbHDcR8sfUYstq2eNqFStSay04r5OQ8D9bLUpq3Qnno2X +D4FEJuEDirriULgJJgBlp3wTK+VwSoPIudNSUEukcR7FAgMBAAGjUzBRMB0GA1Ud +DgQWBBQnzhsSRSz+22uO8AE3syDP8woh6jAfBgNVHSMEGDAWgBQnzhsSRSz+22uO +8AE3syDP8woh6jAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBZ +8dVboBcVjQKLnAN0pV0IyPhg9BTMH8jdu1u1U9bOS78wbufTVm+jswD5jTTjD2Er +eJ/dgBmWTDfXsPiEfTTkJ5NiOjzpi16nXwBPTuYYngvqI+gDsXNfOI25CT2ahAzv +nc7yvYVn2vILX/MGTNRMk+2RkWl3dcEpruRtEENTYdhdwaa93d5efBpa3yAzdGT0 ++qqj5O8OsEL+hYKu7rOKIWIjQjq9JcB055WgNl8tdoIFpi5Vvx/wN+V4aziF6vap +75+Lm9qFhCcJd9gLV1xpYiXOYjcpWo4H+kzvkzwH+TvJUyqO8Qjl/ycsLw0hT+/b +1zlyWB3dwBae7EeVb4Gu +-----END CERTIFICATE----- diff --git a/tools/local-env/ssl/nginx-selfsigned.key b/tools/local-env/ssl/nginx-selfsigned.key new file mode 100644 index 0000000000000..d9f46a6a5e5da --- /dev/null +++ b/tools/local-env/ssl/nginx-selfsigned.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCq19+Fs1og/x0T +LHu/zdybDXD/JNBl/tvIB5PbQ1geiYXnr0zNUCrnwaiBUCX2aC4nEHpnNeHOp2ro +VaIY7mImSLau0UV4+sWxQUZHVwRqKg+sbzr81vMh6eyttFgITusXj0l2oshGvEaU +qPm7tRwZZUgnLA7q0QCq2QoIQunApSwutsTdCAxCD52J+8l4WhE0K6qx1QI77WPN +5jwapXeNSpmlEvsuG9p8M2G7AvmIjkxJrzjWnVRPIB9E6fhIbHDcR8sfUYstq2eN +qFStSay04r5OQ8D9bLUpq3Qnno2XD4FEJuEDirriULgJJgBlp3wTK+VwSoPIudNS +UEukcR7FAgMBAAECggEAAKxrsjaFOW1mokf3mVach8FPJhmmGTTXJD0Ed9a/0cIt +PgpORzEcQuXJIA6tjYSeTV9ya2Hkg0DF6znjUROFgwkn2a/3X1cI7ZL7JG7T9m+2 +g4v4p0/ZGK4dxofUYNcu7OCLIdHo6LgCkBsW9j9R4CvuaiOXIrM8JbBH25+vjiPw +UmJsL0m1Dn+/8C8keG9E8fXFrdlr9Gz06U1zRFz1Me4baUEiWtZUq6QRrjAX6j8c +WQ+j6A+A4zxqfG7pWSQsII8gDIjexaZmtLfJbeabGorAzJTxSQb816pGqRPpH9Mn +Ey42EAIHNj7Pf7pKcxVi/YkcPErPMWveqKLaej+hMQKBgQDX16BWgNChBb/B6pFP +dtfBcekfqBAUmKkQxuj3OFfUOF6E1XBC3YjWxwj+RDwDEnK4v4pkV5wupaKDtv/e +PzepCu3DL0tnvDTNzNeISimlJ0SAstyeMppUES7KhJ1NKp/R6f0AH30OVP9qZU66 +fJT+BrutPCbSKcaFwVmAXqmqcQKBgQDKoPu5/os2DPVNYvt+1wegEO7AoH66s+SQ +b3hiZovqZ3abHoIEIKBTKbc8M9fOl9QzayX0fBeQqxHLYWYv9PYIlxgP/1D6UWyw +dBsYq6eJVlxRaZesQcluN/H5ATliJBfVQbifwmgATE7j38L9REoYa1Ar20T5atcS +fTVHZ6cblQKBgBs3jXha9fPYDb4eHgSvL7Ws74CWaLCwL2F2M5o4+JpCIWkOoQFN +fhvXLUMix457nQu+22ybv44CROPnB4y23AXs4t5h8Fg8W0w4MFV3RJkWwoSYCUnJ +h7xiDkxrPIqmfVCy+LwzPEm6XhrEe5D4dLEzmCbYFu0ZZ3cmUmrlhO+BAoGATr1N +9JHYkPFqJV9QcZKnsOjDjnEPrgeXyxS2CC7nMfhwm4i4Z1gyVP7B6JAQzYQsfqql +fiL2mU4QxSKdLgeXz/C+9gB1/D/F56/Gk8ioevLnPu+0c8jAuKbeza9PGDcEV+eJ +EfPerDb69QwP3pE55dFVvyUe4XlGCDZFjPDXfB0CgYBzgG53pTBhwU3Igzx/A4hz +FLiTU0A0TcynrvQ576DoYRWQcPK9uTZHOBqeEo400w7G+7lzKVtoLqqD61IBPNnn +PoSvgyUNythlJyyMnucyXkhfLoYyFl9BNzBqqrawUj7We6DyHOLjiP4QzBTm/MWg +RDv+ZnxadzpHt8R37Usy+g== +-----END PRIVATE KEY-----