(本文档仅供参考)(nginx的方案源于网上资料,本文档仅供参考)
Smartbi 与第三方系统部署在不同的机器上,或者部署在同一机器不同的应用服务器域下,双方系统集成时经常出现跨域访问。随着Chrome新版本对跨域cookie传递的限制趋严,苹果设备上Safari浏览器等对跨域cookie传递的限制,需要解决跨域问题的场景逐渐增多,而nginx的
反向代理功能解决跨域是非常方便的,如下举例说明。随着Chrome新版本对跨域cookie传递的限制趋严,苹果设备上Safari浏览器等对跨域cookie传递的限制,需要解决跨域问题的场景逐渐增多,解决跨域最常用的方案是部署代理,比如F5和nginx等常见的第三方代理都可以配置代理smartbi,其中nginx的反向代理功能的解决方案是很方便的,以下举例说明nginx的配置方案。
环境背景
nginx所在机器的ip:10.10.101.73
...
代码块 | ||||
---|---|---|---|---|
| ||||
#user root root; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost 10.10.101.73; #charset koi8-r; resolver 8.8.8.8; #代理smartbi,为了防止出现重定向等问题,location后的名称建议与proxy_pass 地址的中的上下文一致,此处都写/smartbi/ location /smartbi/ { proxy_pass http://10.10.202.17:18600/smartbi/ ; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 100m1000m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } #代理第三方系统SmartbiSSO,/SmartbiSSO/需要根据外部第三方系统上下文名称自行修改,如果上下文是空,建议写 / location /SmartbiSSO/ { proxy_pass http://10.10.12.87:8080/SmartbiSSO/ ; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 100m1000m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } } |
使用上述配置启动nginx后,通过nginx的ip去访问smartbi和第三方系统,即:使用上述配置启动nginx后,浏览器需要通过nginx的ip去访问smartbi和第三方系统,即:
第三方系统地址首页:http://10.10.101.73/SmartbiSSO
...
- 浏览器访问的第三方系统地址包含nginx所在的ip(域名)和端口(协议默认端口则省略)
- 第三方系统中的页面集成的smartbi的地址也包含一致的nginx的ip(域名)和端口(协议默认端口则省略)
从浏览器端看,访问第三方系统的地址和第三方系统集成的smartbi地址关系如下图:
Viewtracker |
---|