本文介绍了如何配置星空旗舰版轻量级环境以支持外网和内网访问。针对仅能单一访问的问题,提出了使用Nginx配置nginx.conf文件的解决方案,详细说明了配置步骤和参数设置,确保能够通过内外网路径分别访问服务。
本文适用范围
星空旗舰版轻量级环境配置外网、内网访问。如果按照这种方式配置不成功,欢迎私信交流,共同完善。
为什么要写这个帖子
在社区查找配置外网访问的时候,有看到这种解决方案:星空旗舰版配置外网访问。但小伙伴反馈按照这种方式配置后,只能通过外网访问,不能通过内网访问。那有没有支持外网访问和内网访问的方法呢?这个困扰了我一段时间,直到我看到了这个帖子:金蝶云·苍穹多地址访问,这似乎是一个可行的方案。
在这里将配置外网的情况分为三种:
在带有公网ip的服务器上部署环境,需要通过公网ip访问,这种情况只需参考:星空旗舰版配置外网访问,到启动脚本配置 domain.contextUrl 即可。
在内网服务器上部署环境,通过内网穿透工具等手段配置公网访问,如果不需要内网访问,也是按照1中的方式来处理即可。
在情况2的基础上,如果还需要提供内网访问,就要用到Nginx来配置了,这也是本文要介绍的。
如何配置Nginx
前置条件:
了解Nginx的安装和配置,本文不做介绍,可以自行学习了解,这里只介绍如何配置nginx.conf实现内网、外网访问。
了解内网穿透等工具的使用,已经成功配置内网穿透。
参数说明:
我们以星空旗舰服务为例,在开发者工具上,它的访问地址如下图,127.0.0.1:8080/ierp:
内网穿透工具的配置为:external.com.cn:9998->127.0.0.1:9998,注意两边的端口可以是不一样的。
这个时候,我们可以修改nginx.conf配置文件,在http块下添加2个server配置,如下:
修改保存之后,通过nginx -s reload 重新加载配置,就可以通过内网和外网访问旗舰服务了。
内网访问路径:http://127.0.0.1:9999/ierp/
外网访问路径:http://external.com.cn:9998/ext/
具体代码
下面给出示例配置,具体的参数根据自己的情况来调整。
# 内网访问 server { listen 9999; # 在这里修改内网访问端口。修改之后,要同步修改location /ext/ 中的proxy_pass server_name galaxy_private; location ~(\.(do|jsp)$)|(\.)|(/ierp/(kapi|kdctlres|attachment|excelpreview|kws|cbs|monitor)/)|(/ierp/?$)|(/ierp/(index\.html|mobile\.html|login\.html|login-mobile\.html)$)|(monitor)/ { proxy_pass http://127.0.0.1:8080; # 这里配置开发者工具中的旗舰服务访问地址,注意不要加上/ierp proxy_set_header tenantAlias ierp; #传租户ID } } # 外网访问 server { listen 9998; # 在这里配置外网映射到本地的端口,注意这里和proxy_set_header clientDomain无关 server_name galaxy_public; location /ext/ { proxy_pass http://127.0.0.1:9999/ierp/; #转发到内网配置去 proxy_connect_timeout 1800; proxy_read_timeout 1800; proxy_send_timeout 1800; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-NginX-Proxy true; proxy_set_header clientDomain http://external.com.cn:9998/ext/; 在这里配置外网路径,注意加上/ext/(与location保持一致) } }