页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

(nginx的方案源于网上资料,本文档仅供参考)

背景

直接访问smartbi地址是http协议格式的,但是由于实际的安全需要通过nginx修改成了https格式的地址,此时用户通过https协议地址访问smartbi可能会出现各种问题。直接访问smartbi地址是http协议的,但是由于实际的安全需要通过nginx修改成了https协议的地址,此时用户通过https协议的地址访问smartbi可能会出现各种问题。

nginx配置如下:

代码块
languagejs
linenumberstrue
collapsetrue
#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
  client_max_body_size 80m;
  client_body_buffer_size 10m;
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  120;
  server_tokens off;
    server {
        listen 80 ; 
        listen 443 ssl;
        server_name www.xxx.com;
        access_log  logs/www.xxx.com.log;
        error_log  logs/www.xxx.com.log;	
        ssl_certificate     ssl/xxx.com.crt;
        ssl_certificate_key ssl/xxx.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        root   html;
        index  index.html index.htm index.php;
        location / {
            proxy_pass  http://10.10.202.17:18080;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_max_temp_file_size 0;
            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;
            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
       }
    }
}

现象

类似上述配置在通过https格式的地址访问smartbi时可能会出现如下问题:类似上述配置在通过https协议的地址访问smartbi时可能会出现如下问题:

1、在界面上无法导出资源、系统日志、备份知识库;

2、打开报表点导出按钮无法导出文件;

...

4、配置了域名,部署了企业微信扩展包配置正确,在smartbi推送报表到企业微信后也正常,但是通过企业微信app无法正常打开报表(出现404等错误);

解释

出现上述问题的原因在于https协议格式的地址在重定向后变成了http,本质是浏览器重定向时nginx错误的告知浏览器使用了proxy出现上述问题的原因在于https协议的地址在重定向后变成了http,本质是浏览器重定向时nginx错误的告知浏览器使用了proxy_pass地址(原始smartbi地址)的http协议。

...

proxy_redirect http:// https://;

这一行的含义是在重定向时遇到http://格式的地址全部替换成https开头的地址全部替换成https://


依次采用上述解决方案修改配置后重载nginx测试,一般至少有一个方案能解决。

...