Назад | Перейти на главную страницу

Перенаправление в порт nginx не отображается

Конфигурация у меня следующая. Я пытаюсь перенаправить 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>