ORDS 25.2.1部署于Nginx/Tomcat后Cookie显示异常的解决咨询
环境
- ORDS 25.2 部署在 Tomcat 9.0 上
- Java 17
- 数据库与 APEX 部署在独立的 PaaS 服务器
- 反向代理:Nginx
问题
升级到 ORDS 25.2.1 后,APEX 页面布局错乱,部分 Cookie(比如 NSC_ESNS)没被当作 HTTP 头处理,反而直接显示在页面体里。
当前 Nginx 配置
location /apex/ { proxy_pass http://127.0.0.1:8080/apex/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; }
推荐的 Nginx 配置调整
针对 Cookie 泄露到页面体和 APEX 布局异常的问题,可添加以下关键配置项:
强制传递 Cookie 响应头
添加proxy_pass_header Set-Cookie显式指定传递所有 Set-Cookie 头,避免 Nginx 误将其混入响应体:proxy_pass_header Set-Cookie;ORDS 25.2.1 调整了响应头处理逻辑,显式声明后能确保 Cookie 被正确识别为响应头,不会跑到页面里。
配置响应缓冲区
开启缓冲并设置合理的缓冲区大小,确保 Nginx 能准确区分响应头和响应体,防止头内容错误写入页面:proxy_buffering on; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k;补充客户端来源头信息
添加X-Forwarded-For和X-Forwarded-Host头,让 ORDS 和 APEX 能正确识别请求来源,避免因上下文错误导致的布局和 Cookie 处理异常:proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Host $host:$server_port;优化静态资源加载
APEX 的静态资源(CSS、JS 等)通过/i/路径访问,单独配置这一路径的缓存和头信息,能解决因静态资源加载异常导致的布局错乱:location /i/ { proxy_pass http://127.0.0.1:8080/i/; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; expires 1y; add_header Cache-Control "public, immutable"; }
调整后的完整配置示例
location /apex/ { proxy_pass http://127.0.0.1:8080/apex/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_pass_header Set-Cookie; proxy_buffering on; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; } location /i/ { proxy_pass http://127.0.0.1:8080/i/; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; expires 1y; add_header Cache-Control "public, immutable"; }
内容的提问来源于stack exchange,提问作者Flavia Cabral
相关产品推荐
相关产品推荐

