janusec icon indicating copy to clipboard operation
janusec copied to clipboard

如何处理静态文件,比如图片在本地磁盘,还有nginx对应多个server的情况如何处理

Open ivanmissu opened this issue 2 years ago • 15 comments

如何处理静态文件,比如图片在本地磁盘 之前用nginx是 本地磁盘文件映射到nginx的location 是我要waf -> nginx -> app吗 有没有可能是 waf -> app

如果使用waf -> nginx -> app 这种情况的话, 我如果一个nginx 有多个server的情况 因为域名已经指向了waf 那反向代理到ip是如何区分多个server呢

@zhyale

ivanmissu avatar May 23 '22 09:05 ivanmissu

如果您使用JANUSEC应用网关,不需要nginx,JANUSEC应用网关自身就支持发布静态网站或静态资源(在没有后端服务器的情况下),需要将路由类型选择为 Static_Site ,默认文件通常为 index.html 。 如果有多个后端服务器,可以在路由配置那里增加路由(在可编辑状态,点击路由设置右边的加号)。 具体配置可参考 https://www.janusec.com/download/Janusec-Application-Gateway-Configuration-Guide-CN.pdf

zhyale avatar May 24 '22 12:05 zhyale

我把JANUSEC部署在了A服务器, 但是应用在B服务器,B服务器有个前后端分离项目,B的后端服务会上传一些文件,保存到了B服务器,之前是使用nginx将上传的文件设置为静态路径访问,现在如果访问使用JANUSEC,怎么设置B的上传文件为静态资源访问。 @zhyale

ivanmissu avatar May 25 '22 01:05 ivanmissu

如果需要上传静态资源文件,那么只配置简单的反向代理转发即可(Reverse_Proxy),不用配置Static_Site,因为你的应用无法读写JANUSEC下面的目录。

zhyale avatar May 25 '22 12:05 zhyale

如果需要上传静态资源文件,那么只配置简单的反向代理转发即可(Reverse_Proxy),不用配置Static_Site,因为你的应用无法读写JANUSEC下面的目录。

也就是说 最好的情况 还是我用janusec 反向代理目标服务器的nginx 用目标服务器nginx做静态文件缓存 这样可以防止janusec访问静态文件也去后端应用服务器

ivanmissu avatar May 26 '22 03:05 ivanmissu

是的,反向代理是最通用的功能

zhyale avatar May 26 '22 15:05 zhyale

是的,反向代理是最通用的功能

我还有一个问题 在反向代理后面端口必须吗 我Reverse_Proxy对应的另一台机器的nginx 使用域名, 如果还加端口的话 调到反向代理的nginx的server就不是域名的server了 而是第一个server

ivanmissu avatar May 27 '22 03:05 ivanmissu

我现在后端服务在另一台机器,这个机器和janusec同属于一个内网 nginx配置如下 image image 这里nginx 配置了两个server 第一个是配置的一个外网域名,假如是api.abc.com 第二个是配置的一个内网域名,假如是api.abc.internal 并且已经在jansuec机器的hosts文件配置了对应的内网ip 然后我再janusec配置反向代理如下 image 应用经过jansuec反向代理后,到nginx,nginx被第一个server拦截到,没有达到预期,这个问题不知道能怎么排查下吗? @zhyale

ivanmissu avatar May 30 '22 02:05 ivanmissu

配置那里需要按照指定的格式,需要是 IP:Port 的格式,不支持域名。

zhyale avatar May 30 '22 03:05 zhyale

配置那里需要按照指定的格式,需要是 IP:Port 的格式,不支持域名。

好吧 就是目前我的这种需求应该是不支持的是吧

ivanmissu avatar May 30 '22 05:05 ivanmissu

配置那里需要按照指定的格式,需要是 IP:Port 的格式,不支持域名。

好吧 就是目前我的这种需求应该是不支持的是吧

初步判断可以支持,将外网域名指向JANUSEC应用网关,且网关中仅配置使用外网域名,网关会自动将该域名传给后端服务器。内网域名不用。图中写IP的地方就填写内网IP地址,配域名的地方仅配置外网域名。

zhyale avatar May 30 '22 06:05 zhyale

配置那里需要按照指定的格式,需要是 IP:Port 的格式,不支持域名。

好吧 就是目前我的这种需求应该是不支持的是吧

初步判断可以支持,将外网域名指向JANUSEC应用网关,且网关中仅配置使用外网域名,网关会自动将该域名传给后端服务器。内网域名不用。图中写IP的地方就填写内网IP地址,配域名的地方仅配置外网域名。

目前应该不太好使用ip 因为我B的服务器上用nginx做了本地文件的服务,而且对应多个项目(均是前后端分离的),如果使用ip直接指到B服务器的nginx 就没有办法区分是哪个服务了,如果使用ip,在janusec需要配置多个反向代理,这个配置对于只是接口或者后端服务是可以的,但是如果是前后端分离的项目的前端静态页面 就需要把界面放到janusec服务器,而且其对应的静态资源也要放到janusec服务器,就是这边需求应该是两个 ,第一是外网只走janusec即可,janusec反向代理的服务都走内网;第二是服务对象的静态资源不走动态服务器,只走静态服务器,所以真实服务所在的服务器可能还需要nginx一层。 如果目前这种情况,想实现上面的目标,可能我需要把静态资源放到janusec服务器, 那真实服务器上传的文件等又要同步到janusec服务器,发布项目的时候也要把后端发布到真实服务器,前端发布到janusec服务器,这样可能有点太麻烦。 如果janusec反向代理可以写内网域名的话这个就可以解决,想知道反向代理不能填域名只能填ip加端口的设计是有什么原因吗,后续是否可以支持反向代理域名呢? @zhyale

ivanmissu avatar Jun 01 '22 09:06 ivanmissu

JANUSEC会把用户侧域名带给后端服务器的,不影响后端仅使用域名,填写IP是为了直接寻址。

zhyale avatar Jun 01 '22 12:06 zhyale

用户侧的域名是外网域名吧 如果像使用本地域名 就是自己配置到/etc/hosts里的 可以带过去吗,就是反向代理中填写本地域名

ivanmissu avatar Jun 02 '22 03:06 ivanmissu

用户侧的域名是外网域名吧 如果像使用本地域名 就是自己配置到/etc/hosts里的 可以带过去吗,就是反向代理中填写本地域名

是的,外网域名。测试场景,用户侧hosts也可以。网关上的hosts不会带过去。

zhyale avatar Jun 02 '22 03:06 zhyale

是否后期可以把反向代理的域名(配置本地域名)带过去,或者可以修改请求头来实现

ivanmissu avatar Jun 02 '22 07:06 ivanmissu