Конфигурация у меня следующая. Я пытаюсь перенаправить http-трафик на порт 8443.
Я запускаю очки на разных портах и использую некоторые уловки, чтобы добраться до них.
Теперь наш основной портал охраняется IIS 7.5, который я не могу изменить, так как некоторые офисные приложения должны оставаться доступными.
Я установил модуль ARR / 3.0 и прокси-сервер в IIS для моего приложения на моем поддомене.
порт 8080 и 8443 ведут к моему серверу nginx. порты 80 и 443 ведут к серверу IIS, и я не могу их изменить из-за приложений, которые необходимо загружать с сервера IIS.
Единственная проблема заключается в том, что когда я пытаюсь получить доступ к своему домену через порт 80 (порт IIS), правило перенаправления из nginx лишается номеров портов и изменения протокола. Я подозреваю, что это делает IIS, потому что, когда я получаю доступ через 8080, он правильно перенаправляет на HTTPS, как и должно.
Общее
URL запроса: http://subdomain.example.com/
Метод запроса: ПОЛУЧИТЬ
Код состояния: 302 Перемещено временно
Удаленный адрес: 82.161.204.120:80
Политика реферера: без реферера при понижении рейтинга
Заголовки ответа
Длина содержимого: 170
Тип содержимого: текст / html
Дата: понедельник, 20 августа 2018 г. 12:22:28 GMT
Расположение: http://subdomain.example.com/
Сервер: Microsoft-IIS / 7.5
X-Powered-By: ARR / 3.0
X-Powered-By: ASP.NET
Заголовки запроса
Принять: text / html, application / xhtml + xml, application / xml; q = 0.9, image / webp, image / apng,/; q = 0,8
Принятие кодировки: gzip, deflate
Accept-Language: nl-NL, nl; q = 0,9, en-US; q = 0,8, en; q = 0,7, de; q = 0,6
Cache-Control: без кеша
Подключение: keep-alive
Cookie: _ga = GA1.2.1536444328.1523437334; lang = nl-NL; i_like_gogits = 9a86afa5ec7597c8; _csrf = P9KjWDXD-yzc5aRkXRto54cExJ46MTUzNDc1NjUwOTYyODU1NjQzMQ% 3D% 3D; redirect_to =% 252Ffavicon.ico
Хост: subdomain.example.com
Прагма: без кеширования
Небезопасные запросы на обновление: 1
Пользовательский агент: Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 68.0.3440.106 Safari / 537.36
Моя конфигурация IIS 7.5
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://192.168.0.37/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Моя конфигурация nginx. Я попробовал несколько настроек, которые нашел в ответах на переполнение стека, но IIS продолжает переписывать его на http://subdomain.example.com без https вместо желаемого https://subdomain.example.com:8443
server {
listen 443 ssl;
listen [::]:443 ssl;
listen 8443 ssl;
listen [::]:8443 ssl;
server_name subdomain.example.com;
ssl_certificate /etc/letsencrypt/live/subdomain.example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/subdomain.example.com/privkey.pem; # managed by Certbot
proxy_set_header X-Forwarded-Proto $scheme;
location /.well-known {
proxy_set_header X-Forwarded-Proto $scheme;
alias /var/www/repo.exit-reizen.nl/.well-known;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:6000;
}
client_max_body_size 50M;
}
server {
listen 80;
listen [::]:80;
listen 8080;
listen [::]:8080;
port_in_redirect on;
server_name subdomain.example.com;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
location /.well-known {
proxy_set_header X-Forwarded-Proto $scheme;
alias /var/www/subdomain.example.com/.well-known;
}
return 302 https://subdomain.example.com:8443$request_uri;
}
Есть ли способ настроить IIS для приема всех параметров перенаправления, поскольку nginx подталкивает их, не переписывая их сам так, как он считает нужным?
Я решил свою серьезную проблему, используя традиционное правило перенаправления и исключив хорошо известный для certbot домен.
С этим все, чего нет в .well-known
будет перенаправлен на https, что работает, но все же было бы лучше, если бы IIS подчинялся без вопросов или изменений тому, что nginx отбрасывает.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" patternSyntax="Wildcard" stopProcessing="true">
<match url=".well-known*" />
<action type="Rewrite" url="http://192.168.0.37/{R:0}" />
</rule>
<rule name="redirect to https" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions logicalGrouping="MatchAny">
<add input="{URL}" negate="true" pattern="*.well-known*" />
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}:8443{REQUEST_URI}" redirectType="Found" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>