#!/bin/sh #htpasswd part rm /etc/nginx/.htpasswd || echo "cleared" touch /etc/nginx/.htpasswd USERS_SPLIT=$(echo -n $COMBO | tr ";" "\n") for USER in $USERS_SPLIT do USERNAME=$(echo -n $USER | cut -d ":" -f 1) PASSWORD=$(echo -n $USER | cut -d ":" -f 2 | head -c-1) htpasswd -b /etc/nginx/.htpasswd $USERNAME $PASSWORD done #gateways setup #gateway_0 is main rm /etc/nginx/conf.d/srv.conf || echo "cleared" touch /etc/nginx/conf.d/srv.conf GATEWAYS_SPLIT=$(echo -n $GATEWAY | tr ";" "\n") COUNTER=0 for GATEWAY in $GATEWAYS_SPLIT do cat <> /etc/nginx/conf.d/srv.conf upstream gateway_$COUNTER { server $(echo -n $GATEWAY | cut -d "|" -f 1); } EOT COUNTER=$((COUNTER + 1)) done #main cat <> /etc/nginx/conf.d/srv.conf server { listen 0.0.0.0:$PORT; server_name __; proxy_buffering off; client_body_buffer_size 10M; client_max_body_size 10M; location / { auth_basic "Pushgateway server authentication"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://gateway_0; } location /metrics { auth_basic "Pushgateway server authentication"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://gateway_0; EOT #mirror redirect COUNTER=0 for GATEWAY in $GATEWAYS_SPLIT do if [ $COUNTER -gt 0 ]; then cat <> /etc/nginx/conf.d/srv.conf mirror /mirror_$COUNTER; EOT fi COUNTER=$((COUNTER + 1)) done echo " }" >> /etc/nginx/conf.d/srv.conf #mirror catcher cat <> /etc/nginx/conf.d/srv.conf if (\$http_x_is_mirror) { rewrite ^/(.*)\$ /mirror/\$1 last; } location ~ ^/mirror/(.*)$ { rewrite /mirror/(.*) /\$1 break; auth_basic "Pushgateway server authentication"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://gateway_0; } EOT #mirror location COUNTER=0 for GATEWAY in $GATEWAYS_SPLIT do if [ $COUNTER -gt 0 ]; then cat <> /etc/nginx/conf.d/srv.conf location = /mirror_$COUNTER { internal; rewrite /.* \$request_uri break; proxy_pass http://gateway_$COUNTER; proxy_set_header X-Is-Mirror 'yes'; proxy_set_header Authorization "Basic $(echo -n $GATEWAY | cut -d "|" -f 2 -s | head -c-1 | base64)"; limit_except POST { deny all; } } EOT fi COUNTER=$((COUNTER + 1)) done echo "}" >> /etc/nginx/conf.d/srv.conf cat /etc/nginx/conf.d/srv.conf cat /etc/nginx/.htpasswd nginx -t