diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ee97f6e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM nginx:alpine + +WORKDIR /usr/share/nginx/html + +RUN rm -f index.html && \ + # xxx not great for files that dont end like: .js.gz .wasm.gz + sed -i 's/js;/js gz;/' /etc/nginx/mime.types + +COPY default.conf /etc/nginx/conf.d/ + +COPY . . diff --git a/default.conf b/default.conf new file mode 100644 index 0000000..728de58 --- /dev/null +++ b/default.conf @@ -0,0 +1,47 @@ +server { + listen 80; + server_name localhost; + + # enable gzip compression of simple text files when transmitting to clients + # that can handle gzip/deflate responses. + # do not gzip json files because range requests to .json files made by browser js + # applications like archive.org/details/webshots-freeze-frame-index get whole object, + # not the range + gzip on; + gzip_types "text/html; charset=utf-8" text/html text/plain text/javascript application/x-javascript application/javascript text/css text/csv text/xml application/xml; + + # add charset info to Content-Type header for text files + # by default, will apply to files with the following mime types: + # text/(plain|html|xml|vnd.wap.wml), application/(javascript|rss+xml) + # if we wish to apply it to additional mime types (say, application/json), we can add a charset_types directive + # see https://nginx.org/en/docs/http/ngx_http_charset_module.html for more details + charset utf-8; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + + # customizations: + autoindex on; + add_header Access-Control-Allow-Origin *; + add_header Access-Control-Allow-Methods GET,POST,OPTIONS; + add_header Access-Control-Allow-Headers Accept-Encoding,Accept-Language,Authorization,Cache-Control,Content-Length,Content-Range,DNT,Pragma,Range,X-Requested-With; + add_header Vary Origin; + } + + # customization - like above but with `Content-Encoding` header + location ~\.(js|wasm)\.gz$ { + root /usr/share/nginx/html; + add_header Access-Control-Allow-Origin *; + add_header Access-Control-Allow-Methods GET,POST,OPTIONS; + add_header Access-Control-Allow-Headers Accept-Encoding,Accept-Language,Authorization,Cache-Control,Content-Length,Content-Range,DNT,Pragma,Range,X-Requested-With; + add_header Vary Origin; + + add_header Content-Encoding gzip; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +}