背景
Odoo 9.0系统,安装于Windows Server 2012R2,同时与IIS并存。Odoo自带web服务器,使用端口8069。因客户需要用80端口访问,因此需要进一步设置,且8069端口通过公网访问,在某些客户环境下会被防火墙拦截。
要点
网上有些文章提到可以通过修改Odoo配置文件重启服务使其服务端口从8069转移到80,(如这篇文章所提到的:http://rcadhikari.blogspot.com.au/2015/05/to-change-default-port-8069-to-80-or.html),但在IIS与Odoo并存的环境下,IIS总是会优先占用80端口,即使停掉IIS的默认网站和其他占用80端口的服务也是如此。除此之外,某些环境下还有特殊服务如SQL Server Reporting Service, Web Publish Sevice等也会占用80端口。因此,按照前面文章描述的方法修改Odoo文件后,通过80端口访问Odoo服务器还是会遇到404的错误
最后我选择了保留Odoo的8069端口设置,通过Application Request Routing 3.0设置路由规则,将外网访问Odoo服务器80端口通过路由转发至8069,并获得成功,至今运行尚未遇到问题
步骤
Step 1. 确认服务器上没有其他应用会使用80端口
因为即将使用80端口进行路由代理,因为80端口不能被其他任何应用占用
Step 2. 检查服务器端是否已安装Application Request Routing 3.0
如果还没有安装,需要先安装,安装后重启IIS Manager
下载地址 http://www.iis.net/downloads/microsoft/application-request-routing
Step 3. 如果还没有Server Farm被设置,需要先设置Server Farm
1. 在IIS管理器中找到服务器节点,右击Server Farms,选择Create Server Farm,弹出窗口中输入Server Farm Name,勾选Online选项,下一步。
2. 向新建的Server Farm添加服务器: 输入要添加的服务器地址,如本机服务器地址,把要添加的服务器地址都列入后,点完成。
Step 4. 设置路由代理
在IIS管理器中找到服务器节点,在特性试图(Features View)中找到Application Request Routing Cache,双击进入,勾选"Enable Proxy"后确认
Step 5. 启动“默认网站”
如果IIS中的"默认网站"尚未被启动,则现在尝试启动之,检查其是否工作正常。
Step 6. 添加路由规则
1. IIS管理器中找到默认网站节点,点击后,在特性试图下找到URL Rewrite项,双击进入
2. 点击右侧"Add Rule(s)...",
3. 选择Blank Rule
4. 在Edit Inbound Rule窗口中填入/选择以下信息:
Name: Odoo Proxy
Requested Url: Matches the Patterns
Using: Wildcards
Patterns: *
Ignore Case: 选中
Action Type: Rewrite
Rewrite URL: http://localhost:8069/.{R:1}
Append query string,选中
Log rewritten URL, 不选
确定保存。
Step 7. 重启默认网站后,其他机器访问该服务器80端口即可呈现Odoo系统的内容了
参考文章
https://knowledge.safe.com/articles/632/using-iis-and-arr-as-a-reverse-proxy.html
http://blogs.iis.net/wonyoo/application-request-routing-arr-as-a-reverse-proxy
http://rcadhikari.blogspot.com.au/2015/05/to-change-default-port-8069-to-80-or.html