(以Nginx配置为例)内外网转发端口不一致、导致打开客户端失败的解决方案原创
金蝶云社区-Webb
Webb
9人赞赏了该文章 1739次浏览 未经作者许可,禁止转载编辑于2020年12月30日 11:36:59
  1. 写在开头:一般我们还是强烈建议客户让内外网端口保持一致,避免遇到其他网络问题;如果不想开放的默认80端口,可以参照我的另一篇文章:https://vip.kingdee.com/article/97286154675566848?share_fromuid=72313,改成其他端口;如果网络复杂,实在需要处理这种内外网端口不一致的场景,请参考下面步骤;

  2. 找到服务器上的K3Cloud安装目录,打开Kingdee\K3Cloud\WebSite\App_Data\Common.config,在AppSettings结点中添加配置:<add key="ForwardLoginUrl" value="{X-Forwarded-Proto}://{Forward-x-RequestHost}:{X-Forwarded-Port}" />image.png

  3. 修改Nginx配置,在监听处添加指定的头部信息,举例如下:image.png

  4. 分别重启IIS和Nginx服务即可。


小结:心细的童鞋会发现,Nginx中设置的header信息,实际正好对应Common.config中添加的配置参数中的X-Forwarded-ProtoX-Forwarded-Port,nginx中也可灵活一些写变量$server_port来替代9012这种固定值的写法,含义是外部请求到达nginx服务器时的端口


附1:如果不使用Nginx,仅仅只配置ForwardLoginUrl参数且为固定访问地址(如<add key="ForwardLoginUrl" value="http://127.0.0.1:9012" />),这种情况相当于强制指定了客户端的访问地址,不会区分内外网,如果仅提供某一固定地址访问,则可采用仅配置该参数的方式。

附2:针对配置了参数ForwardLoginUrl的产品环境,打开报表客户端无法成功携带端口、导致打开失败的问题,已于2020年10月正式补丁修复。

赞 9