来自互联网的客户需要访问只能通过 VPN 访问的 Web 服务器,该域是 internal.domain,我无法控制它。在内部,登录的主页是 caas.internal.domain:6643。要从互联网连接,用户登录到 URL login.external.domain:9943,该 URL 指向通过 VPN 将流量路由到 caas.internal.domain:6643 的 nginx。来自 caas.internal.domain 的响应流量被重定向到 login.external.domain,没有问题。html、json、js 中的所有 internal.domain URL 都替换为 external.domain。唯一的问题是来自下面的内部 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 变量替换为具有相同变量的外部 URL?
希望这是有意义的
非常感谢
答案1
您需要将以下内容添加到您的internal.domain
server
块中:
location /caas/propConfig/myApp.json {
return 301 https://external.domain:9943$request_uri;
}
这会将所有包含前缀的 URL 重定向到其他域中的相应 URL。