-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathgenerateProxyConfig.sh
More file actions
executable file
·91 lines (78 loc) · 1.98 KB
/
generateProxyConfig.sh
File metadata and controls
executable file
·91 lines (78 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/bin/sh
#ip, port config file.
portFile=$1
file="proxy.conf"
echo "stream {" > $file
echo "" >> $file
echo " log_format tcp_log '\$remote_addr [\$time_local] '
'\$protocol \$status \$bytes_sent \$bytes_received '
'\$session_time "\$upstream_addr" '
'"\$upstream_bytes_sent" "\$upstream_bytes_received" "\$upstream_connect_time"';" >> $file;
echo " access_log /var/log/nginx/tcp_access.log tcp_log;" >> $file
echo " error_log /var/log/nginx/tcp_error.log;" >> $file
echo "" >> $file
echo " proxy_connect_timeout 2;" >> $file
echo "" >> $file
function valid_ip()
{
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
declare -a servers;
ipCount=0
while IFS= read -r line
do
# 获取ip地址。
if valid_ip $line;
then
if [ $ipCount -eq 0 ]
then
unset servers;
declare -a servers;
fi
servers[$ipCount]=$line
echo ${servers[$ipCount]}
ipCount=$((ipCount+1))
continue;
fi
ipCount=0
port=$line
# config upstream servers.
upstream="server${port}"
echo " upstream ${upstream} {" >> $file
if [ ${#servers[@]} -gt 1 ]
then
count=1
for ip in "${servers[@]}"
do
if [ $count == 1 ]
then
echo " server ${ip}:${port} weight=3 max_fails=2 fail_timeout=10;" >> $file
else
echo " server ${ip}:${port} weight=1 max_fails=2 fail_timeout=10;" >> $file
fi
count=$((count+1))
done
else
echo " server ${servers[0]}:${port};" >> $file
fi
echo " }" >> $file
# config local servers.
echo " server {" >> $file
echo " listen ${port};" >> $file
echo " proxy_pass ${upstream};" >> $file
echo " }" >> $file
echo "" >> $file
echo "" >> $file
done < $portFile
echo "}" >> $file