Facebook
From Ivory Kangaroo, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 377
  1. sudo mkdir -p /usr/local/openresty/nginx/conf/ && cat << 'EOF' | sudo tee /usr/local/openresty/nginx/conf/nginx.conf > /dev/null
  2. user                          iota;
  3. worker_processes              auto;
  4. error_log                     logs/error.log;
  5. pid                           /usr/local/openresty/nginx/logs/nginx.pid;
  6.  
  7. events {
  8.   worker_connections          4096;
  9. }
  10.  
  11. http {
  12.   default_type                application/json;
  13.   keepalive_timeout           70;
  14.   init_by_lua                 'require "cjson"';
  15.   ssl_session_cache           shared:SSL:32m;
  16.   ssl_session_timeout         5m;
  17.   server_tokens               off;
  18.   add_header                  X-XSS-Protection '1; mode=block';
  19.   add_header                  X-Content-Type-Options nosniff;
  20.  
  21.   log_format                  main '$remote_addr - $remote_user [$time_local]  $status '
  22.                                 '"$request" $body_bytes_sent "$http_referer" '
  23.                                 '"$http_user_agent" "$http_x_forwarded_for"';
  24.  
  25.   map $http_upgrade $connection_upgrade {
  26.     default upgrade;
  27.     '' close;
  28.   }
  29.  
  30.   upstream iri {
  31.     server                    127.0.0.1:14267;
  32.   }
  33.  
  34.   upstream grafana {
  35.     server                    127.0.0.1:3000;
  36.   }
  37.  
  38.   upstream prometheus {
  39.     server                    127.0.0.1:9090;
  40.   }
  41.  
  42.   upstream iota_exporter {
  43.     server                    127.0.0.1:9311;
  44.   }
  45.  
  46.   upstream ipm {
  47.     server                    127.0.0.1:8888;
  48.   }
  49.  
  50.   proxy_redirect              off;
  51.   proxy_set_header            Host $host;
  52.   proxy_set_header            X-Real-IP $remote_addr;
  53.   proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
  54.   proxy_connect_timeout       120;
  55.   proxy_send_timeout          120;
  56.   proxy_read_timeout          120;
  57.   proxy_buffers               32 4k;
  58.  
  59.   client_max_body_size        1m;
  60.   client_body_buffer_size     128k;
  61.  
  62.   limit_req_zone              $binary_remote_addr zone=iri:10m rate=5r/s;
  63.   limit_req_zone              $binary_remote_addr zone=grafana:10m rate=25r/s;
  64.   limit_req_zone              $binary_remote_addr zone=prometheus:10m rate=25r/s;
  65.   limit_req_zone              $binary_remote_addr zone=iota_exporter:10m rate=25r/s;
  66.   limit_req_zone              $binary_remote_addr zone=ipm:10m rate=25r/s;
  67.  
  68.   server {
  69.     listen                    14265 default_server deferred;
  70.     listen                    443 ssl http2 deferred;
  71.     server_name               v22018117236076934.nicesrv.de;
  72.  
  73.  
  74.     ssl_certificate           /etc/letsencrypt/live/v22018117236076934.nicesrv.de/fullchain.pem;
  75.     ssl_certificate_key       /etc/letsencrypt/live/v22018117236076934.nicesrv.de/privkey.pem;
  76.     ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
  77.     ssl_ciphers               HIGH:!aNULL:!MD5;
  78.     ssl_prefer_server_ciphers on;
  79.  
  80.     add_header                Strict-Transport-Security 'max-age=63072000; includeSubdomains';
  81.  
  82.     ssl_stapling              on;
  83.     ssl_stapling_verify       on;
  84.     ssl_trusted_certificate   /etc/letsencrypt/live/v22018117236076934.nicesrv.de/fullchain.pem;
  85.     resolver                  8.8.8.8 8.8.4.4 9.9.9.9 valid=300s;
  86.     resolver_timeout          1s;
  87.  
  88.     error_page 405 @error405;
  89.     location @error405 {
  90.       add_header Allow 'GET, HEAD, OPTIONS, POST' always;
  91.     }
  92.  
  93.     location /grafana/ {
  94.       limit_req               zone=grafana burst=50 nodelay;
  95.       limit_req_log_level     warn;
  96.       limit_req_status        444;
  97.  
  98.       proxy_pass              http://grafana/;
  99.     }
  100.  
  101.     location /prometheus/ {
  102.       auth_basic              "Prometheus";
  103.       auth_basic_user_file    /usr/local/openresty/nginx/conf/.htpasswd;
  104.  
  105.       limit_req               zone=prometheus burst=50 nodelay;
  106.       limit_req_log_level     warn;
  107.       limit_req_status        444;
  108.  
  109.       proxy_set_header        Host $host;
  110.       proxy_set_header        X-Real-IP $remote_addr;
  111.       proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  112.       proxy_set_header        X-Forwarded-Proto $scheme;
  113.  
  114.       sub_filter_once         off;
  115.       sub_filter              '="/' '="/prometheus/';
  116.       sub_filter              'var PATH_PREFIX = "";' 'var PATH_PREFIX = "/prometheus";';
  117.  
  118.       rewrite                 ^/prometheus/?$ /prometheus/graph redirect;
  119.       rewrite                 ^/prometheus/(.*)$ /$1 break;
  120.  
  121.       proxy_pass              http://prometheus/;
  122.     }
  123.  
  124.     location /iota_exporter/ {
  125.       auth_basic              "IOTA Prometheus Exporter";
  126.       auth_basic_user_file    /usr/local/openresty/nginx/conf/.htpasswd;
  127.  
  128.       limit_req               zone=iota_exporter burst=50 nodelay;
  129.       limit_req_log_level     warn;
  130.       limit_req_status        444;
  131.  
  132.       proxy_set_header        Host $host;
  133.       proxy_set_header        X-Real-IP $remote_addr;
  134.       proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  135.       proxy_set_header        X-Forwarded-Proto $scheme;
  136.  
  137.       proxy_pass              http://iota_exporter/;
  138.     }
  139.  
  140.     location /ipm/ {
  141.       auth_basic              "IOTA Peer Manager";
  142.       auth_basic_user_file    /usr/local/openresty/nginx/conf/.htpasswd;
  143.  
  144.       limit_req               zone=ipm burst=50 nodelay;
  145.       limit_req_log_level     warn;
  146.       limit_req_status        444;
  147.  
  148.       proxy_set_header        Host $host;
  149.       proxy_set_header        X-Real-IP $remote_addr;
  150.       proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  151.       proxy_set_header        X-Forwarded-Proto $scheme;
  152.  
  153.       sub_filter_once         off;
  154.       sub_filter              '="/' '="/ipm/';
  155.       sub_filter              'var PATH_PREFIX = "";' 'var PATH_PREFIX = "/ipm";';
  156.  
  157.       rewrite                 ^/ipm/(.*)$ /$1 break;
  158.  
  159.       proxy_pass              http://ipm/;
  160.     }
  161.  
  162.     location /socket.io/ {
  163.       auth_basic_user_file    /usr/local/openresty/nginx/conf/.htpasswd;
  164.  
  165.       proxy_http_version      1.1;
  166.       proxy_set_header        Upgrade $http_upgrade;
  167.       proxy_set_header        Connection "upgrade";
  168.       proxy_redirect          off;
  169.  
  170.  
  171.       proxy_set_header        Host $host;
  172.       proxy_set_header        X-Real-IP $remote_addr;
  173.       proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  174.       proxy_set_header        X-Forwarded-Proto $scheme;
  175.  
  176.       proxy_pass              "http://127.0.0.1:8888";
  177.     }
  178.  
  179.     location / {
  180.       limit_req               zone=iri burst=10 nodelay;
  181.       limit_req_log_level     warn;
  182.       limit_req_status        444;
  183.  
  184.       if ( $request_method !~ ^(HEAD|OPTIONS|POST)$ ) {
  185.         return 405;
  186.       }
  187.  
  188.       if ( $request_method = OPTIONS ) {
  189.         proxy_pass http://iri;
  190.       }
  191.  
  192.       if ( $request_method = POST ) {
  193.         set $upstream '';
  194.         access_by_lua_block {
  195.           ngx.req.read_body()
  196.           local cjson            = require('cjson')
  197.           local data             = ngx.req.get_body_data()
  198.           local json_data        = cjson.decode(data)
  199.           local req_command      = json_data["command"]
  200.           local allowed_pub_commands = {
  201.             'getNodeInfo',
  202.             'getTips',
  203.             'findTransactions',
  204.             'getTrytes',
  205.             'getInclusionStates',
  206.             'getBalances',
  207.             'getTransactionsToApprove',
  208.             'attachToTangle',
  209.             'interruptAttachingToTangle',
  210.             'broadcastTransactions',
  211.             'storeTransactions',
  212.             'wereAddressesSpentFrom'
  213.           }
  214.  
  215.           local function has_value (tab, val)
  216.             for k, v in pairs(tab) do
  217.               if v == val then
  218.                 return true
  219.               end
  220.             end
  221.  
  222.             return false
  223.           end
  224.  
  225.           if has_value(allowed_pub_commands, req_command) then
  226.             ngx.var.upstream = "iri"
  227.           else
  228.             ngx.exit(405)
  229.           end
  230.         }
  231.  
  232.         proxy_pass http://$upstream;
  233.       }
  234.     }
  235.   }
  236. }
  237. EOF

Replies to Untitled rss

Title Name Language When
Re: Untitled Sole Lion text 5 Years ago.