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
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
|