Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ivanmissu opened this issue May 23, 2022 · 15 comments

Comments

@ivanmissu
Copy link

ivanmissu commented May 23, 2022

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

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

@zhyale

@ivanmissu ivanmissu changed the title 如何处理静态文件,比如图片在本地磁盘 如何处理静态文件,比如图片在本地磁盘,还有nginx对应多个server的情况如何处理 May 23, 2022
@zhyale
Copy link
Member

zhyale commented May 24, 2022

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

@ivanmissu
Copy link
Author

ivanmissu commented May 25, 2022

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

@zhyale
Copy link
Member

zhyale commented May 25, 2022

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

@ivanmissu
Copy link
Author

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

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

@zhyale
Copy link
Member

zhyale commented May 26, 2022

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

@ivanmissu
Copy link
Author

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

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

@ivanmissu
Copy link
Author

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

@zhyale
Copy link
Member

zhyale commented May 30, 2022

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

@ivanmissu
Copy link
Author

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

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

@zhyale
Copy link
Member

zhyale commented May 30, 2022

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

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

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

@ivanmissu
Copy link
Author

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

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

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

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

@zhyale
Copy link
Member

zhyale commented Jun 1, 2022

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

@ivanmissu
Copy link
Author

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

@zhyale
Copy link
Member

zhyale commented Jun 2, 2022

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

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

@ivanmissu
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants