Skip to content

Instantly share code, notes, and snippets.

@Jeff-Bouchard
Forked from Delivator/nginx.conf
Created December 8, 2020 02:57
Show Gist options
  • Select an option

  • Save Jeff-Bouchard/fab05a90bfaa0f97e8229f604ae93307 to your computer and use it in GitHub Desktop.

Select an option

Save Jeff-Bouchard/fab05a90bfaa0f97e8229f604ae93307 to your computer and use it in GitHub Desktop.
nginx skynet.local config
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
proxy_cache_path temp/skynet levels=1:2 keys_zone=skynet:10m inactive=1d max_size=10g use_temp_path=off;
server {
listen 80;
server_name skynet.local;
client_max_body_size 10G;
location / {
root html;
index index.html index.htm;
}
location /skynet/skyfile {
proxy_read_timeout 600;
if ($request_id ~* "(\w{2})(\w{2})(\w{2})(\w+)") {
set $dir1 $1;
set $dir2 $2;
set $dir3 $3;
set $dir4 $4;
}
# proxy this call to siad endpoint (make sure the ip is correct)
#
# note that we point uploads to port '9970', do this when you want to
# run in a configuration where you have two siad instances, one for
# downloads and one for uploads. This drastically improves the up - and
# download speed of your portal. When running your portal in this double
# siad setup, make sure only the download portal runs in 'portal mode'.
# The upload siad can be run in normal mode. Set the port to '9980' if
# you do not want to run your portal in the double siad setup.
proxy_pass http://127.0.0.1:9980/skynet/skyfile/skynet.local/$dir1/$dir2/$dir3/$dir4$is_args$args;
proxy_set_header Expect $http_expect;
add_header Access-Control-Allow-Origin *;
proxy_hide_header Access-Control-Allow-Origin;
# make sure to override user agent header - siad requirement
proxy_set_header User-Agent: Sia-Agent;
# replace BASE64_AUTHENTICATION with base64 encoded <user>:<password>
# for sia user is empty so it's just :<password>
# to generate the passcode use https://www.base64encode.org or any other base64 encoder
proxy_set_header Authorization "Basic BASE64_AUTHENTICATION";
}
location ~ "^/([a-zA-Z0-9-_]{46}(/.*)?)$" {
# we need to explicitly use set directive here because $1 will contain the skylink with
# decoded whitespaces and set will re-encode it for us before passing it to proxy_pass
set $skylink $1;
proxy_read_timeout 600;
# proxy this call to siad /skynet/skylink/ endpoint (make sure the ip is correct)
proxy_pass http://127.0.0.1:9980/skynet/skylink/$skylink$is_args$args;
proxy_set_header Access-Control-Allow-Origin: *;
# make sure to override user agent header - siad requirement
proxy_set_header User-Agent: Sia-Agent;
# make sure the Skynet-File-Metadata header gets exposed in the response
add_header Access-Control-Expose-Headers skynet-file-metadata;
# if you are expecting large headers (ie. Skynet-Skyfile-Metadata), tune these values to your needs
#proxy_buffer_size 128k;
#proxy_buffers 4 128k;
# cache frequent (> 10) downloads for 24 hours
proxy_cache skynet;
proxy_cache_key $uri;
add_header Cache-Control public;
expires max;
etag on;
# proxy_cache_min_uses 10;
# proxy_cache_valid 200 1440m;
}
location ~ "^/file/([a-zA-Z0-9-_]{46}(/.*)?)$" {
# we need to explicitly use set directive here because $1 will contain the skylink with
# decoded whitespaces and set will re-encode it for us before passing it to proxy_pass
set $skylink $1;
proxy_read_timeout 600;
# proxy this call to siad /skynet/skylink/ endpoint (make sure the ip is correct)
# this alias also adds attachment=true url param to force download the file
proxy_pass http://127.0.0.1:9980/skynet/skylink/$skylink?attachment=true&$args;
proxy_set_header Access-Control-Allow-Origin: *;
# make sure to override user agent header - siad requirement
proxy_set_header User-Agent: Sia-Agent;
# make sure the Skynet-File-Metadata header gets exposed in the response
add_header Access-Control-Expose-Headers skynet-file-metadata;
# if you are expecting large headers (ie. Skynet-Skyfile-Metadata), tune these values to your needs
#proxy_buffer_size 128k;
#proxy_buffers 4 128k;
# cache frequent (> 10) downloads for 24 hours
proxy_cache skynet;
proxy_cache_key $uri;
# proxy_cache_valid 200 1440m;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment