-
Notifications
You must be signed in to change notification settings - Fork 47
/
docker-entrypoint.sh
executable file
·136 lines (116 loc) · 3 KB
/
docker-entrypoint.sh
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/bin/sh
set -e
PROXY_PASS_BLOCK=""
# start tor if set to true
if [ "$TOR_PROXY" = "true" ]; then
echo "Starting tor socks proxy"
tor &
tor_process=$!
TOR_PROXY="127.0.0.1:9050"
fi
# inject request proxy
if [ -n "$REQUEST_PROXY" ]; then
REQUEST_PROXY_URL="$REQUEST_PROXY"
echo "Request proxy set to $REQUEST_PROXY"
sed -i 's/REQUEST_PROXY = ""/REQUEST_PROXY = "\/request-proxy"/g' /usr/share/nginx/html/index.html
PROXY_PASS_BLOCK="$PROXY_PASS_BLOCK
location /request-proxy/ {
proxy_pass http://$REQUEST_PROXY_URL;
rewrite ^/request-proxy/(.*) /\$1 break;
}
"
if [ -n "$PROXY_FIRST" ]; then
echo "Telling app to use request proxy first"
sed -i 's/PROXY_FIRST = false/PROXY_FIRST = true/g' /usr/share/nginx/html/index.html
fi
else
echo "No request proxy set"
fi
# inject cache relay URL
if [ -n "$CACHE_RELAY" ]; then
echo "Cache relay set to $CACHE_RELAY"
sed -i 's/CACHE_RELAY_ENABLED = false/CACHE_RELAY_ENABLED = true/g' /usr/share/nginx/html/index.html
PROXY_PASS_BLOCK="$PROXY_PASS_BLOCK
location /local-relay {
proxy_pass http://$CACHE_RELAY/;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "upgrade";
}
"
else
echo "No cache relay set"
fi
# inject image proxy URL
if [ -n "$IMAGE_PROXY" ]; then
echo "Image proxy set to $IMAGE_PROXY"
sed -i 's/IMAGE_PROXY_PATH = ""/IMAGE_PROXY_PATH = "\/imageproxy"/g' /usr/share/nginx/html/index.html
PROXY_PASS_BLOCK="$PROXY_PASS_BLOCK
location /imageproxy/ {
proxy_pass http://$IMAGE_PROXY;
rewrite ^/imageproxy/(.*) /\$1 break;
}
"
else
echo "No Image proxy set"
fi
CONF_FILE="/etc/nginx/conf.d/default.conf"
NGINX_CONF="
server {
listen 80;
server_name localhost;
merge_slashes off;
$PROXY_PASS_BLOCK
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# Gzip settings
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types
application/atom+xml
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/xhtml+xml
application/xml
font/eot
font/otf
font/ttf
image/svg+xml
text/css
text/javascript
text/plain
text/xml;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
"
echo "$NGINX_CONF" > $CONF_FILE
_term() {
echo "Caught SIGTERM signal!"
# stop tor if started
if [ "$TOR_PROXY" = "true" ]; then
kill -SIGTERM "$tor_process" 2>/dev/null
fi
# stop nginx
kill -SIGTERM "$nginx_process" 2>/dev/null
}
nginx -g 'daemon off;' &
nginx_process=$!
trap _term SIGTERM
wait $nginx_process