Исходный код вики Проблемы и сценарии
Версия 1.11 от Alexandr Fokin на 2022/05/13 14:50
Последние авторы
author | version | line-number | content |
---|---|---|---|
1 | Возможны случаи, когда веб приложение будет формировать html страницы, содержащие некорректные ссылки. Например ссылающиеся не на адрес прокси, а на внутренний адрес приложения. | ||
2 | Потребуется, что прокси модифицировал исходящие страницы, переписывая содержимое на основе некоторых правил. | ||
3 | |||
4 | |||
5 | 1) Отключения настройки "Reverse rewrite host in response headers" | ||
6 | |||
7 | IIS reverse proxy with rewrites can't handle a redirect from the server we proxy to | ||
8 | https://stackoverflow.com/questions/4243959/iis-reverse-proxy-with-rewrites-cant-handle-a-redirect-from-the-server-we-proxy | ||
9 | |||
10 | ---- | ||
11 | |||
12 | 2) Переписывание заголовков во входящих запросах для отключения сжатия в ответах сервера приложения. (Например gzip) | ||
13 | |||
14 | У IIS могут возникнуть проблем с изменением содержимого страницы, если ответ от сервера приложения возвращается в сжатом виде. | ||
15 | |||
16 | IIS as a reverse proxy - compression of rewritten response from backend server | ||
17 | https://stackoverflow.com/questions/15926203/iis-as-a-reverse-proxy-compression-of-rewritten-response-from-backend-server | ||
18 | |||
19 | The server variable is not allowed to be set. | ||
20 | http://www.sansys.net/2015/01/server-variable-is-not-allowed-to-be-set.html | ||
21 | |||
22 | Замечание: заголовок с указанием сжатия для html контента, и для ответа от web api могут быть разными. | ||
23 | |||
24 | ---- | ||
25 | |||
26 | 3) Переписывание редирект ссылок в хедерах ответов от севера приложения | ||
27 | |||
28 | Modifying HTTP Response Headers | ||
29 | https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/modifying-http-response-headers | ||
30 | |||
31 | ---- | ||
32 | |||
33 | 4) Переписывание ссылок в html страницах, json ответах web api и другом контенте. | ||
34 | |||
35 | |||
36 | How to fix URL Rewriting for links inside CSS files with IIS7 | ||
37 | https://stackoverflow.com/questions/8653399/how-to-fix-url-rewriting-for-links-inside-css-files-with-iis7 | ||
38 | |||
39 | Замечание: паттерн сопоставления в html страницах и json документах могут различаться в следствии наличия/отсутствия/различии в экранировании символов. | ||
40 | |||
41 | |||
42 | {{code language="xml"}} | ||
43 | <outboundRules> | ||
44 | <preConditions> | ||
45 | <preCondition name="IsRedirection"> | ||
46 | <add input="{RESPONSE_STATUS}" pattern="3\d\d" /> | ||
47 | </preCondition> | ||
48 | <preCondition name="ResponseIsHtml"> | ||
49 | <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> | ||
50 | </preCondition> | ||
51 | <preCondition name="ResponseIsJson"> | ||
52 | <add input="{RESPONSE_CONTENT_TYPE}" pattern="^application/json" /> | ||
53 | </preCondition> | ||
54 | </preConditions> | ||
55 | <rule name="Rewrite Location Header" preCondition="IsRedirection" stopProcessing="true"> | ||
56 | <match serverVariable="RESPONSE_Location" pattern="http://ResponseUrl(.*)" /> | ||
57 | <action type="Rewrite" value="https://ProxyUrl{R:1}" /> | ||
58 | </rule> | ||
59 | <rule name="Rewrite static content" preCondition="ResponseIsHtml" stopProcessing="true"> | ||
60 | <match filterByTags="None" pattern="http://ResponseUrl" /> | ||
61 | <action type="Rewrite" value="https://ProxyUrl" /> | ||
62 | </rule> | ||
63 | <rule name="Rewrite api content" preCondition="ResponseIsJson" stopProcessing="true"> | ||
64 | <match filterByTags="None" pattern="http:\\/\\/ResponseUrl" /> | ||
65 | <action type="Rewrite" value="https://ProxyUrl" /> | ||
66 | </rule> | ||
67 | </outboundRules> | ||
68 | {{/code}} | ||
69 | |||
70 | ---- | ||
71 | |||
72 |