通过nginx代理的odoo报表打印时总是超时 问题解决 (转)

Posted 激流中的树叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过nginx代理的odoo报表打印时总是超时 问题解决 (转)相关的知识,希望对你有一定的参考价值。

转自:http://blog.sina.com.cn/s/blog_53d318170102wvnm.html

 

 

背景

  将odoo服务器部署在公网上, 服务器没有公网地址,  前端使用nginx提供对外服务的公网ip和tcp端口

 qweb-html类型的报表能正常在浏览器上显示,但打印时浏览器上出现如下错误:
 Uncaught SyntaxError:
追溯:
SyntaxError: Unexpected token S
    at Object.parse (native)
    at HTMLIFrameElement. (http://..../web/content/.../web.assets_common.js:3038:379)
    at HTMLIFrameElement.jQuery.event.dispatch (http://.../web/content/.../web.assets_common.js:637:451)
    at HTMLIFrameElement.elemData.handle (http://.../web/content/.../web.assets_common.js:610:173)
 
  qweb-pdf类型的的报表打印时 也出现上述错误。
 
解决方法
  在设置| 技术| 参数| 系统参数 界面中, 增加一个系统参数
  参数名称:  report.url
  取值 :http://127.0.0.1:8069
 
原因: 
  odoo生成报表时, 首先生成html格式的报表, 然后使用Wkhtmltopdf将 html转换成pdf
  当不设置report.url时,其html 报表内,有如下内容
 

...

....
因服务器使用内网ip 无法访问其被映射的公网ip, 导致在服务器上无法访问css , 也就无法生成pdf
 
相关源码
文件addon|report|model|report.py
       irconfig_obj = self.env[‘ir.config_parameter‘].sudo()
       base_url = irconfig_obj.get_param(‘report.url‘) or irconfig_obj.get_param(‘web.base.url‘)
 
 
 
我碰到的问题其表象与其不一致,就是点击打印后一直不动,直到超时时间过了,然后报一个错。
但是我通过上述的解决方案也解决了我的问题。今天在此记录一下。

以上是关于通过nginx代理的odoo报表打印时总是超时 问题解决 (转)的主要内容,如果未能解决你的问题,请参考以下文章

Odoo 打印报表定制方法

记一次通过nginx反代网站请求总是超时的问题

代理到 Node/Express 上游时不常见的 NGINX 错误/超时(连接到上游时上游超时)

ODOO的报表

例外:bus.Bus 不可用 Odoo 8 multiprocessing 与 nginx 作为代理服务器

Nginx使用Nginx做反向代理时,关于被代理服务器相应的超时设置