我在云端的服务器中有两个Odoo实例。如果我执行以下步骤,则会出现“内部服务器错误”:
http://111.222.33.44:3333
)http://111.222.33.44:4444
)如果我想在第二个实例(在另一个端口)工作,我需要首先删除浏览器cookie以访问其他Odoo实例。如果这样做一切正常。
如果我同时在不同的浏览器(Firefox和Chromium)中加载它们,它们也能正常运行。
这不是NginX问题,因为我尝试使用和不使用它。
有没有办法永久解决这个问题?这是预期的行为吗?
答案 0 :(得分:0)
最后我认为这是预期的行为。所有网站的cookie都专门存储在Web浏览器中的每个网站(针对每个域)。因此,如果我只更改端口,则第一个实例的cookie与另一个实例的cookie冲突,因为它具有相同的域(在我的示例中为111.222.33.44
)。
所以有一些解决方法:
在/etc/hosts
中的笔记本电脑中创建几个域名:
111.222.33.44 cloud01
111.222.33.44 cloud02
然后饼干不再相互干扰。访问每个实例
http://cloud01:3333
http://cloud02:4444
还有另一种解决方法。如果我使用这个铬扩展,问题就会消失,因为会话是分开处理的:
答案 1 :(得分:0)
如果您有权访问源代码,则可以更改此文件,如下所示,并检查问题是否已解决。
<强>附加元件/网络/控制器/ main.py 强>
if db != request.session.db:
request.session.logout()
request.session.db = db
abort_and_redirect(request.httprequest.url)
并删除 - &gt; request.session.db = db
低于此 IF 语句。
答案 2 :(得分:0)
请尝试以下更改:
<强>的OpenERP /插件/碱/ IR / ir_http.py 强>
在第140行的某个方法 _handle_exception 中,你会发现这段代码:
attach = self._serve_attachment()
if attach:
return attach
将其替换为:
if isinstance(exception, werkzeug.exceptions.HTTPException) and exception.code == 404:
attach = self._serve_attachment()
if attach:
return attach
答案 3 :(得分:0)
您可以使用计算机上的单个OpenERP服务器完美地为所有数据库提供服务。不幸的是,你没有提到你看到的错误以及你期望的结果 - 让你有点难以帮助你; - )
无论如何,这里有一些基于您提供的信息的随机想法:
如果您在OpenERP上没有监听所有接口时遇到问题,请尝试在配置文件中指定0.0.0.0作为xmlrpc_interface,这应该让所有IP上的OpenERP监听8069。
请注意,如果您要连接到例如Apache,则无关紧要。 http://www.sample.com:8069/?db=openerp因为您直接连接到OpenERP。如果你想通过Apache,你需要在vhost配置中设置ReverseProxy规则,然后OpenERP不需要监听所有公共IP。
OpenERP 6.1及更高版本可以根据虚拟主机名自动检测数据库名称,并过滤可用数据库的名称:您需要使用--db-filter参数启动它,该参数表示使用的模式过滤可用数据库列表。 %h表示域名,%d是该域的第一个域组件。因此,例如使用--db-filter = ^%d $,如果我使用http://test.example.com:8069结束服务器,我将只看到测试数据库。如果只有一个数据库匹配,则不显示该列表,并且用户将直接在正确的数据库上结束。如果确保OpenERP看到外部主机名,即在Apache代理配置中设置X-Forwarded-Host标头并启用OpenERP的--proxy模式,这甚至可以在Apache反向代理之后工作。
端口重用问题的出现是因为您尝试在同一个接口/端口组合上启动多个OpenERP服务器。这是不可能的,除非你小心每个IP启动一个服务器,并在xmlrpc_interface参数中设置IP,我认为你不需要这样做。 Apache支持的基于命名的虚拟主机全部由一个主进程处理,该进程在所有接口上侦听端口80。如果你想对OpenERP做同样的事情,你只需要为你的所有域启动一个OpenERP服务器,并让它在0.0.0.0,端口8069上监听,如上所述。 最重要的是,您不清楚在各种配置文件中您将设置不同的内容。在具有相同代码的同一台机器上运行40个不同的OpenERP服务器听起来有点过分。 OpenERP设计为多租户,因此可以从同一台服务器提供许多(读取数百个)数据库。