You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

109 lines
2.4 KiB

#!/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 <<EOT >> /etc/nginx/conf.d/srv.conf
upstream gateway_$COUNTER {
server $(echo -n $GATEWAY | cut -d "|" -f 1);
}
EOT
COUNTER=$((COUNTER + 1))
done
#main
cat <<EOT >> /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 <<EOT >> /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 <<EOT >> /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 <<EOT >> /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