怎样访问局域网数据库SQL
sqlite是文件型数据库,所以它本身不支持网络访问。
折中的办法有两个1是将sqlite数据库上传至vps/云主机,自行写一个介于你软件和数据库的中间件,由它负责获取请求并传回对应的数据。至于连接方式是http还是直接的socket这取决于你。
优点:对软件的修改程度最小缺点:你需要自行设计中间件面对大量链接时的资源管理2是租用一个在线mysql服务,将目前sqlite的数据“同步”到mysql数据库,再更新你的软件的数据库连接方式即可。
优点:不需要自己处理数据库连接的事情缺点:对软件需要做较大改动个人建议第二种
nginx stream用法
nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。比如在内网有一个mysql服务,想暴露到公网上去使用,就可以通过nginx代理的方式通过nginx来进行内网mysql的访问。
实验环境
nginx1.12.1 : 192.168.1.19
mysql : 192.168.1.20:3306
1:编译或者升级nginx至版本1.9.0以上,编译过程中需带上--with-stream。
# ./configure --prefix=/opt/apps/nginx --with-stream
# make && make install
2:配置stream,定义代理192.168.1.20的3306端口映射为端口2333。
# vi /opt/apps/nginx/conf/nginx.conf
……
……
events {
use epoll;
worker_connections 65535;
}
#stream配置
stream {
server {
listen 2333;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass 192.168.1.20:3306;
}
}
http {
……
……
}
3:开启nginx,验证代理是否生效。
image.png
可以看到我们现在可以通过nginx代理的端口访问到内网的mysql服务了。这也直接避免了mysql直接暴露到公网,增加些许的安全。当然,利用stream也可以实现后端服务的负载均衡。
Nginx的stream模块是用于处理TCP和UDP流量的模块,它可以用于代理、负载均衡、SSL终端和其他流量控制等方面。下面是一些常见的Nginx stream模块的用法:
TCP代理:可以配置Nginx作为TCP代理服务器,将传入的TCP连接转发到后端的服务器。例如,可以将Nginx配置为代理SMTP、POP3、IMAP、MySQL等服务。
UDP代理:类似于TCP代理,可以配置Nginx作为UDP代理服务器,将传入的UDP数据包转发到后端的服务器。例如,可以将Nginx配置为代理DNS服务。
负载均衡:使用Nginx stream模块可以实现TCP和UDP的负载均衡。可以将流量分发到多个后端服务器,以提高性能和可靠性。
SSL终端:可以使用Nginx stream模块作为SSL终端,用于处理加密的TCP连接。Nginx可以解密传入的SSL连接,并将明文传递给后端服务器。
流量控制:Nginx stream模块还提供了一些流量控制的功能,如连接限制、速率限制等。可以配置Nginx来限制连接数或限制每个连接的带宽。