URL-адреса перенаправления Nginx с динамическими параметрами

Клиенты из Интернета должны получить доступ к веб-серверу, доступному только через VPN, домен - internal.domain, и я не могу его контролировать. Внутренне главная страница для входа - caas.internal.domain: 6643. Для подключения из Интернета пользователи входят в систему по URL-адресу login.external.domain: 9943, указывающему на nginx, который направляет трафик. на caas.internal.domain: 6643 через VPN. Ответный трафик от caas.internal.domain перенаправляется на login.external.domain, это не проблема. Все URL-адреса internal.domain в html, json, js заменяются на external.domain. {{ 1}} Единственная проблема связана с внутренним URL-адресом ниже с параметрами строки запроса, который не переведен.

https: //caas.internal.domain: 6643 / caas / propConfig / myApp.json? Callback = jQuery1234 & excludeApp = Network + Center & _ = 5678

следует заменить на

https: //login.external. домен: 9943 / caas / propConfig / myApp.json? callback = jQuery1234 & excludeApp = Network + Center & _ = 5678

с динамическими 1234 и 5678.

это моя конфигурация:

    server {
      listen          9943 ssl;
      listen          443 ssl;
      server_name     external.domain;

      ssl_certificate      /etc/nginx/ssl/mytest-web.crt;
      ssl_certificate_key /etc/nginx/ssl/mytest-web.key;

      location / {
         resolver 8.8.8.8;
         proxy_set_header Accept-Encoding "";
         proxy_set_header Host $host;
         proxy_set_header X-Forwarded-Host $host;
         proxy_set_header X-Forwarded-Server $host;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Forwarded-Proto $scheme;
         client_max_body_size 1g;
         proxy_pass       https://caas.internal.domain:6643$request_uri;

         proxy_redirect   https://caas.internal.domain:6643 https://login.external.domain:9943;
 
         #sub_filter_types text/css text/xml text/javascript application/json;
         sub_filter_types *;
         sub_filter_once off;

         sub_filter "caas.internal.domain:6643" "login.external.domain:9943";

      }
    } 

Как я могу заменить внутренние переменные URL на внешние адреса с такими же переменными?

Надеюсь, что это имеет смысл

Большое спасибо

0
задан 22 March 2021 в 08:51
1 ответ

Вам нужно добавить следующее в блок internal.domain server:

location /caas/propConfig/myApp.json {
    return 301 https://external.domain:9943$request_uri;
}

Это перенаправит все URL, содержащие префикс, на соответствующий URL в другом домене.

0
ответ дан 24 April 2021 в 02:08

Теги

Похожие вопросы