Замена или генерация строк в nginx.conf на основе переменных среды с использованием скрипта - PullRequest
0 голосов
/ 07 февраля 2019

Существует 5 пар ENV:

PROXY_HOST1=192.168.88.61:10001
PROXY_HOST2=192.168.88.61:10002
PROXY_HOST3=192.168.88.61:10003
PROXY_HOST4=192.168.88.61:10004
PROXY_HOST5=192.168.88.61:10005
PROXY_PASS1=http://192.168.88.59
PROXY_PASS2=http://192.168.88.59
PROXY_PASS3=http://192.168.88.59
PROXY_PASS4=http://192.168.88.59
PROXY_PASS5=http://192.168.88.59

Используя сценарий оболочки, их необходимо передать в раздел конфигурации Nginx:

 location /___PROXY_HOST1___ {
 proxy_pass '___PROXY_PASS1___';
    } 

    location /___PROXY_HOST2___ {
    proxy_pass '___PROXY_PASS2___';
    }

    location /___PROXY_HOST3___ {
    proxy_pass '___PROXY_PASS3___';   
    }

    location /___PROXY_HOST4___ {
    proxy_pass '___PROXY_PASS4___';   
    }

    location /___PROXY_HOST5___ {
    proxy_pass '___PROXY_PASS5___';   
    }

Деликатно решил проблему следующим образом:

#!/bin/bash
### Proxy pass and upstream name replacment part 
sed -i "s?___PROXY_PASS1___?${PROXY_PASS1}?g" /etc/nginx/nginx.conf
sed -i "s?___PROXY_PASS2___?${PROXY_PASS2}?g" /etc/nginx/nginx.conf
sed -i "s?___PROXY_PASS3___?${PROXY_PASS3}?g" /etc/nginx/nginx.conf
sed -i "s?___PROXY_PASS4___?${PROXY_PASS4}?g" /etc/nginx/nginx.conf
sed -i "s?___PROXY_PASS5___?${PROXY_PASS5}?g" /etc/nginx/nginx.conf

### Server part replace 
sed -i "s?___PROXY_HOST1___?$PROXY_HOST1?g" /etc/nginx/nginx.conf
sed -i "s?___PROXY_HOST2___?$PROXY_HOST2?g" /etc/nginx/nginx.conf
sed -i "s?___PROXY_HOST3___?$PROXY_HOST3?g" /etc/nginx/nginx.conf
sed -i "s?___PROXY_HOST4___?$PROXY_HOST4?g" /etc/nginx/nginx.conf
sed -i "s?___PROXY_HOST5___?$PROXY_HOST5?g" /etc/nginx/nginx.conf

Но необходимо было передать 4 или 3 пары ENV PROXY_PATH / HOST вместо 5, и Nginx может украсть старт и выполнить задание.

Есть ли возможность черезцикл?Или, возможно, с генерацией блока location / на основе указанных переменных.

...