Клиенты из Интернета должны получить доступ к веб-серверу, доступному только через 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-адресом ниже с параметрами строки запроса, который не переведен.
следует заменить на
с динамическими 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 на внешние адреса с такими же переменными?
Надеюсь, что это имеет смысл
Большое спасибо
Вам нужно добавить следующее в блок internal.domain
server
:
location /caas/propConfig/myApp.json {
return 301 https://external.domain:9943$request_uri;
}
Это перенаправит все URL, содержащие префикс, на соответствующий URL в другом домене.