使用脚本根据环境变量替换或生成nginx.conf中的字符串

时间:2019-02-07 16:45:53

标签: bash shell nginx nginx-location nginx-config

有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

使用shell脚本,需要将它们传递到Nginx config部分:

 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对PROXY_PATH / HOST ENV,而不是5对,Nginx可以盗用开始并完成工作。

是否有通过循环的选项?或者可以选择根据指定的变量生成location /块。

0 个答案:

没有答案