-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnginx.conf
147 lines (118 loc) · 7.19 KB
/
nginx.conf
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
137
138
139
140
141
142
143
144
145
146
147
worker_processes auto;
events {
worker_connections 128;
}
http {
include mime.types;
sendfile off;
keepalive_requests 100;
keepalive_timeout 65;
gzip_static on; #если уж и отгружаем свои файлы, то делаем это нормально
upstream tls-key {
server 127.0.0.1:28016;
keepalive 1; #не открывать много потоков на гейт -- зависнет
}
proxy_temp_path b:/t-cache/ 1 2; #задаем самые жестокие в мире параметры кэширования
proxy_cache_path b:/vpn-cache/ levels=1:2 keys_zone=token:100m inactive=10d use_temp_path=off;
proxy_ignore_headers "Expires" "X-Accel-Expires" "Cache-Control" "Vary";
proxy_cache_use_stale error timeout invalid_header http_502;
proxy_connect_timeout 5s;
proxy_cache_revalidate off;
server {
listen 80;
proxy_cache_key "$request_method|$host|$request_uri";
client_max_body_size 0;
set $redefine_user_agent "Mozilla/5.0 (Windows NT 6.1; rv:81.0) Gecko/20100101 Firefox/81.0";
set $gate_address "localhost:28016"; #по этому адресу слушает гейт
set $service_url "http://10.10.10.21/"; #сюда заходит клиент
access_log off; #не мусорим в лог
proxy_set_header Host $gate_address; #сообщаем гейту, что зашли локально
proxy_set_header Accept-Encoding ''; #требуем несжатый ответ
proxy_set_header Referer ''; #стараемся о себе поменьше сообщать
proxy_set_header Origin ''; #стараемся о себе поменьше сообщать
proxy_set_header User-Agent $redefine_user_agent; #прикидываемся виндой
proxy_set_header Connection ''; #сбрасываем keepalive -- иначе зависнет гейт
proxy_set_header X-Compress ''; #убираем характерные заголовки Хрома
proxy_set_header Upgrade-Insecure-Requests ''; #убираем характерные заголовки Хрома
location / {
proxy_pass http://tls-key;
proxy_redirect http://$gate_address/ $service_url;
proxy_http_version 1.1;
add_header Content-Security-Policy 'font-src \'self\' data: *;';
sub_filter_types *; #фильтруем все типы ответов
sub_filter_once off; #фильтр может сработать многократно
#делаем из абсолютного пути относительный
sub_filter 'http://$gate_address' ''; #множественные фильтры в одном location поддерживаются в nginx >= 1.9.4
#не обозначаем ПИН как пароль, не вводим браузер в заблуждение (пароль без логина), не даём предлагать варианты.
sub_filter 'type="password" name="pin"' 'type="text" name="pin" autocomplete="off"';
#слишком шумная форма, не надо так орать очевидные вещи
# sub_filter '<font size="1" face="Arial"><b>В поле необходимо ввести PIN-код, указанный в конверте,<br> полученном вместе с электронным ключом</b></font>' '';
#блокируем загрузку скриптов третьих лиц
sub_filter 'src="rest/override-content/grib.js' 'rpl="rest/override-content/grib.js'; #следилка-стучалка group-ib v.2.0
}#сюда попадают все запросы, не подходящие по другим критериям
#это самый нагруженный обработчик, старайтесь, чтобы сюда не попадали заведомо нетекстовые ответы
location ~* .+\/(token\.min\.js|CommonComponents\.js|main\.js|rsa\.js)$ {
proxy_cache_valid any 15d; #здесь и далее везде включаем кэширование
proxy_cache token;
proxy_pass http://tls-key;
proxy_redirect http://$gate_address/ $service_url;
proxy_http_version 1.1;
sub_filter_types *;
sub_filter_once off;
sub_filter 'http://$gate_address' ''; #делаем из абсолютного пути относительный
sub_filter '"http://localhost:"+this.port+' '';
sub_filter '"http://localhost:"+n.port+' '';
sub_filter 'add_deviceprint();' '"";'; #пресекаем сбор метаданных о компьютере клиента
}#обрабатываем скрипты, пытающиеся найти гейт на локалхосте, убираем маркетологический мусор
location ~* /ic/dcb/undefined.* {
alias html/png/$1;
}#какой-то ошибочный запрос
location ~* .*\/(.*Business_Analytics_SberbankAnalytics.*|sb_analytics\.js|biginteger\.js|favicon\.ico|logo\.png)$ {
alias html/subst/$1;
}#отгружаем актуальную или исправленную версию файла или 404 для всякого мусора вроде аналитики
location ~* .+\.(jpg|jpeg|gif|js|css|json|map|png|dsp|wpd|wcs|eot|woff|woff2|svg|ttf|zip|rar|txt|dbf|rtf|doc|docx|xls|xlsx)$ {
proxy_cache_valid any 15d;
proxy_cache token;
proxy_pass http://tls-key;
proxy_redirect http://$gate_address/ $service_url;
proxy_http_version 1.1;
proxy_set_header Host $gate_address; #сообщаем гейту, что зашли локально
proxy_set_header Referer ''; #стараемся о себе поменьше сообщать
proxy_set_header Origin ''; #стараемся о себе поменьше сообщать
proxy_set_header User-Agent $redefine_user_agent; #прикидываемся виндой
proxy_set_header Connection ''; #сбрасываем keepalive -- иначе зависнет гейт
proxy_set_header X-Compress ''; #убираем характерные заголовки Хрома
proxy_set_header Upgrade-Insecure-Requests ''; #убираем характерные заголовки Хрома
}#кэшируем всё это добро
location ^~ /link/ {#по этому запросу отдаем сырую начальную ссылку для администратора
expires -1;
add_header Last-Modified $msec;
alias e:/;
index sslgate.url;
}
location ^~ /bank/ {#это нормальный рабочий запрос
expires -1;
add_header Last-Modified $msec;
root b:/html;
index index.html;
}
location ^~ /reload/ {#по этому запросу выполняем действия в нн-табе (задача remote_restarter)
expires -1;
add_header Last-Modified $msec;
root html;
index reload.html;
access_log logs/reload.log;
}
location ^~ /ccache/ {#по этому запросу выполняем действия в нн-табе (задача clear_cache)
expires -1;
add_header Last-Modified $msec;
root html;
index ccache.html;
access_log logs/ccache.log;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}