Исходный код вики Проблемы и сценарии

Версия 1.13 от Alexandr Fokin на 2022/10/19 16:11

Последние авторы
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