现象
nginx配置监听端口不是80(http协议)或443(https协议)时,登录smartbi后在界面上无法导出资源、系统日志,打开报表点导出按钮无法导出文件,也就是大部分下载的操作都不正常。
如下示例,配置http监听端口是8088,nginx.conf配置如下:
#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 8088;
server_name localhost 10.10.10.23;
#charset koi8-r;
resolver 8.8.8.8;
location /smartbi/ {
proxy_pass http://10.10.202.17:18600/smartbi/ ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 100m;
client_body_buffer_size 128k;
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;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
导出日志时浏览器并未下载文件,查看F12可以看到如下:

如果将8088端口改成80端口,保存重启nginx则可以正常导出日志。
解释
在smartbi中下载资源是会重定向的,当前的nginx配置没有正确的把端口信息告知浏览器导致重定向时用了http协议默认的80端口(http协议的url中不显示80)
解决方案
增加端口信息到proxy_set_header,将
proxy_set_header Host $host;改成
proxy_set_header Host $host:$server_port;
保存配置后重启nginx。
Viewtracker License Missing
There is a problem with the license of the Viewtracker addon. Please check if you have a valid license.
授权码细节