如何允许代理通过同一位置,具有多个上下文路径

如何允许代理通过同一位置,具有多个上下文路径
server {
    listen 80;
    server_name example.com www.example.com; 
    

位置 /consol {

    if ($request_method !~ ^(GET|POST)$) {
        return 405 "Not allowed";
    }
     
    set $consolalb alb.backend;
    proxy_pass http://$consolalb/workspace/;
    
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Custom-Forwarded-Proto $http_x_forwarded_proto;        
    proxy_cache_bypass $http_upgrade;      
    }
}

我有一个场景,用户请求到达我们的 ngnix 容器反向代理。www.example.com/consol并且它必须转发到后端 alb(例如 alb.backend),并且 alb 通过上下文路径 /workspace 映射到 oracle hyperion 应用程序服务器。

通过上述配置,我可以加载初始登录页面 /workspace/index.jsp,同时获取具有不同上下文路径的附加弹出窗口,并出现页面未找到等错误。这些页面未找到的 URL 如下所示www.example.com/interopwww.example.com/mypage.jsp等等,所有弹出窗口都有页面未找到错误。

我需要一些关于如何转发的建议www.example.com/consol首次传入用户请求到 http://$consolalb/workspace/;后续弹出请求到 http://$consolalb/*

答案1

您的应用程序会在其创建的输出中生成 URL。因此,您需要配置应用程序以使用正确的基本 URL,以便其生成的 URL 正确。

相关内容