写在开头:一般我们还是强烈建议客户让内外网端口保持一致,避免遇到其他网络问题;如果不想开放的默认80端口,可以参照我的另一篇文章:https://vip.kingdee.com/article/97286154675566848?share_fromuid=72313,改成其他端口;如果网络复杂,实在需要处理这种内外网端口不一致的场景,请参考下面步骤;
找到服务器上的K3Cloud安装目录,打开Kingdee\K3Cloud\WebSite\App_Data\Common.config,在AppSettings结点中添加配置:<add key="ForwardLoginUrl" value="{X-Forwarded-Proto}://{Forward-x-RequestHost}:{X-Forwarded-Port}" />
修改Nginx配置,在监听处添加指定的头部信息,举例如下:
分别重启IIS和Nginx服务即可。
小结:心细的童鞋会发现,Nginx中设置的header信息,实际正好对应Common.config中添加的配置参数中的X-Forwarded-Proto和X-Forwarded-Port,nginx中也可灵活一些写变量$server_port来替代9012这种固定值的写法,含义是外部请求到达nginx服务器时的端口
附1:如果不使用Nginx,仅仅只配置ForwardLoginUrl参数且为固定访问地址(如<add key="ForwardLoginUrl" value="http://127.0.0.1:9012" />),这种情况相当于强制指定了客户端的访问地址,不会区分内外网,如果仅提供某一固定地址访问,则可采用仅配置该参数的方式。
附2:针对配置了参数ForwardLoginUrl的产品环境,打开报表客户端无法成功携带端口、导致打开失败的问题,已于2020年10月正式补丁修复。
推荐阅读