PS:受XX的影响,只能在家办公。但公司内外网隔离,每次访问公司内部网络时都必须使用跳板机过去,但在编写代码时,本地无法访问数据库,所以必须使用代理来使我可以访问进数据库。
文章目录
现在环境是这样的,有一台服务器, 和若干数据库。我在家通过VPN能访问公司内部的这台CentOS的服务器(当然什么系统不重要,重要的是我能访问到公司的内网去),但不能访问数据库,但这台CentOS服务器可以访问其他数据库,所以我在CentOS上做一个代理,使我可以在本地通过VPN就可以直接访问数据库。
我这个过程中,我使用的是nginx来做了一个反向代理,其过程如下:
一、准备nginx环境
安装过程这个网上有很多教程,其实很简单,就是去官网,首先下载nginx文件包,再上传到服务器中,因为nginx需要依赖与一些库,所以先安装一些库,可以先不管,安装中出问题了再说也行,需要安装的话,大致有下面这些:
安装make:
yum -y install gcc automake autoconf libtool make
安装g++:
yum install gcc gcc-c++
Pcre
yum -y install pcre-devel
openssl
yum -y install openssl openssl-devel
差不多就这些,安装过程中失败的话 可以考虑一下是不是yum源(centos下)的问题,可以考虑替换源。
二、安装nginx
nginx我们一般使用其来做负载均衡,在使用http通信协议应用中使用得较多,但数据库不是走的这个协议,所以配置http模块是没有用的,所以我们需要使用到nginx的Stream模块,这个也是安装的关键。步骤如下:
1、解压下载的nginx压缩包,进去主目录下,可以看到有这样文件
2、配置nginx
在conf目录下去, 可以看到有个nginx.cof文件,对其进行配置。
在配置文件的http同级目录下加入如下, 我已mysql代理为例子:
upstream mysql {
hash $remote_addr consistent;
server xxxx:3306 weight=5 max_fails=3 fail_timeout=30s;#数据库环境的ip
}
server {
listen 3306;#公网机器监听端口
proxy_connect_timeout 1s;
proxy_timeout 36000s;#注意这个,简单的来说就是连接上以后session的保持时间,就是多长时间不活动下次要重新链接,>建议设大一点
proxy_pass mysql;
}
位置如下图:
3、在目录下安装nginx,以及stream模块
./configure --with-http_ssl_module --with-stream
make
验证安装是否成功:
/usr/local/nginx/sbin/nginx -V
带有这个参数就可以了
4、启动nginx
在nginx的根目录下,可以看到有个objs文件夹,文件夹下有个nginx可执行文件,直接执行就行。
启动过程中可能回报端口占用错,如:
nginx: [emerg] bind() to 0.0.0.0:3306 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:3306 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:3306 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:3306 failed (98: Address already in use)…
使用netstat -ntpl 查看,然后干掉即可。
三、补充
也可以使用这个来启动:
systemctl start nginx```
停止nginx :
```powershell
nginx -s stop >>>>快速停止nginx
nginx -s quit >>>>完整有序的停止nginx
卸载nginx:删除nginx文件即可:
rm -rf /usr/local/nginx
四、注意事项
== 注意,后面每次修改配置文件,需要添加端口的话,不是直接修改上面一开始修改的那个配置文件的。而是去修改安装目录下的 conf/nginx.conf 文件, 可以用==
whereis nginx
命令查看。
这个路径在安装完nginx后,即make命令后,是有日志输出了的