第一个问题: mysql有必要用nginx 代理转发吗? 多台服务器的情况下,一台我想应该是不需要吧
第二个问题: 一台主机中, 后端在一个docker 容器里, mysql 在另一个容器里
当后端 发起3306请求时, 地址应该不是 127.0.0.1:3306,这是容器内部地址?
地址: 主机ip:3306 肯定是可以的, 但这样写,会不会存在绕路的问题? 请问还有没其它写法?
感谢您认真的回答,但您如果仅仅是大约或可能,我会更迷糊
1、如果仅仅是在局域网内使用且网络允许访问mysql则无必要;
如果是网络对于mysql数据库有访问安全限制,仅允许应用服务器访问则需要。此时使用nginx是使用的数据流转发功能,而不是http转发和反向代理功能。
https://blog.csdn.net/carefree2005/article/details/121229818
2、应用和数据库在2个不同的容器就是可以理解为在不同的主机,使用127.0.0.1:3306肯定是访问不通的,就需要走路由转发,使用容器的IP:3306端口访问访问。
在启动mysql容器的时候,可以将容器端口映射到宿主机上面,如果你要启动多台mysql容器,公用一个3306端口,那么做负载是有必要的,否则不需要。
有必要,一台的话也可以使用nginx有效控制跨域,保护站点安全,多台服务器可以设置负载均衡,有效缓解各个服务器压力,比如其中一台服务器宕机,其它的服务器也能正常工作,保证数据不丢失,客户体验较好,减少不必要的备份麻烦。至于ip地址及端口号可以在安全组放行