Я работаю над проектом с некоторыми правилами переписывания, которые меня не устраивают. Я пытаюсь переписать их, но не могу понять, как именно добиться того, чего я хочу.
Я хочу предоставить доступ к странице администратора только тогда, когда {REMOTE_ADDR} является известным IP-адрес (прямое соединение с сервером через VPN) или когда {REMOTE_ADDR} равен адресу CDN, а значение {HTTP_X_Forwarded_For} равно адресу VPN.
Предполагается, что 1.2.3.4 - это наша VPN и 4.3.2.1 - это наш CDN, что-то вроде:
<rule name="Block dashboard" stopProcessing="true">
<match url="login.aspx|/admin" />
[NOT]
<conditions>
<add input="{REMOTE_ADDR}" pattern="1.2.3.4" />
</conditions>
[OR]
<conditions>
<add input="{REMOTE_ADDR}" pattern="4.3.2.1" />
<add input="{HTTP_X_Forwarded_For}" pattern="1.2.3.4" />
</conditions>
[/NOT]
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Site is not accessible" />
</rule>
Извините за то, что я сделал свое собственное ИЛИ, а НЕ теги ... Просто пытаюсь объяснить, чего я хочу достичь ...
Ура,
Дан