页面树结构
转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

« 前一个 版本 7 下一个 »

(本文档仅供参考)

问题

  因为需要通过Nginx进行代理转发,在Nginx配置文件中的如下,现在的问题是,通过Nginx转发可以访问到smartbi的登录页面,但是输入用户名和密码没有反映,进不了smartbi看不到资源,请问是什么问题呢?  

 location /oa/test {
       proxy_pass http://192.168.1.10:8080/smartbi/vision/ ;
       proxy_connect_timeout 600s;
       proxy_send_timeout 600s;
       proxy_read_timeout 600s;
  } 

原因分析

登录不成功的原因是cookie_path与地址栏上的path不相符,服务器加载不到地址栏上path对应的cookie因此无法识别session的登录状态,结果就是服务器认为当前session是未登录状态因此停留在登录页或者在页面提示当前会话已经超时。

解决方案

  基于问题中的Nginx配置,此Nginx参数配置目前有三个问题:

  1、正常配置location的转发路径的时候,location /oa/test/  ,需要不能少一个斜杆:

       

   2、不建议这样在映射后的路径中去掉vision ,因为这样重定向还会有问题,正常proxy_pass 配置到smartbi级别就行,具体如;

                proxy_pass http://192.168.1.10:8080/smartbi/ ;

                因为如果这样配置,在smartbi v8以上版本遇到访问smartbix路径下的资源时,会出现404的情况。

   3、应用名和转发路径名称不一致的时候,需要配置 proxy_cookie_path,因为当设置不一样应用名的时候,浏览器发起的请求cookie会识别path相同的则带上cookie,带了cookie,就不会重新再生成cookie了,若是path不一样,每次产生的cookie标识都是不一样的,这样就每次请求等同于一个新的会话,这样就无法进行下一步操作了。客户端和服务器请求如下图:

   

    proxy_cookie_path 的作用是用来改变cookie的路径

           语法: proxy_cookie_path path replacement;  path就是你要替换的路径 replacement 就是要替换的值 

           smartbi.war部署时,默认的cookie path为/smartbi,如果映射成了其他路径,则需要代理同步把/smartbi的cookie path改成其他的路径。

    更多详细介绍可网上搜索关于Nginx的proxy_cookie_path,如:  https://www.jianshu.com/p/34abe7eb6f0b?tdsourcetag=s_pctim_aiomsg

    另外也建议加上 proxy_redirect  ,关于 proxy_redirect 实现的是其作用是对发送给客户端的URL进行修改,更多详细资料也可以直接在网上搜索Nginx的proxy_redirect ,如:https://www.cnblogs.com/kevingrace/p/8073646.html

    在这里做个举例,当前问题Nginx配置需要修改成如下方式:

location /oa/test/ {
      proxy_pass http://192.168.1.10:8080/smartbi/ ;
      proxy_connect_timeout 600s;
      proxy_send_timeout 600s;
      proxy_read_timeout 600s;
      proxy_redirect http://$host/smartbi /oa/test;
      proxy_cookie_path /smartbi /oa/test;
}

         

 

Viewtracker License Missing

There is a problem with the license of the Viewtracker addon. Please check if you have a valid license.

授权码细节

  • 无标签