Nginx反向代理访问内网服务器

Nginx反向代理访问内网服务器

问题描述

公司给配的台式机太垃圾了,不能访问外部网络就算了,还没有maven私服。近期项目不光得使用maven还得使用内网中的数据库之类,台式机太卡只能用自己的笔记本用爱发电。公司内网需要通过ASM入网小助手进行认证,一旦安装了ASM入网小助手笔记本就无法使用U盘了,并且还会乱改你的注册表。不想装小助手还想连接内网的数据库服务,那要怎么办呢?于是想到使用Nginx进行反向代理。

Nginx反向代理配置

先上个配置

1
2
3
4
5
6
7
#根节点下
stream {
server {
listen 12345; #监听本机的端口
proxy_pass 192.168.123.123:3306; #代理内网的mysql
}
}

使用上面配置启动nginx后,在本机就可以使用127.0.0.1:12345来连接mysql了。
按照这种方法只要自己的笔记本接入内网,再在内网台式机上进行如此配置nginx,使用[内网台式机IP]:12345就可以连接内网的mysql了。

优雅的进行Nginx反向代理配置

直接改nginx.conf似乎不是很友好,配置多了也记不清哪个端口代理哪个服务了,同事要用的话还需要说明代理关系。于是乎就有了写一个nginx配置管理系统的想法,主要需求为:代理关系说明、代理配置、nginx控制。原本想使用Qt编写GUI界面程序,但是发现解析Nginx配置文件有点难受,于是使用SpringBoot+Layui+MybatisPlus+Sqlite做了一套web管理系统。设计思路是每次加载nginx.conf前根据数据库数据生成配置文件,由后端提供控制nginx停止与启动的接口。详细代码和release请参见GitHub

reverse-proxy使用说明(v1.0.1)

下载

下载地址:https://github.com/lovexy-fun/reverse-proxy/releases

请选择新版本下载使用,目前仅支持windows系统,其他系统请自行修改源码。

下载zip后请放到非管理员权限可访问的目录下使用(非系统盘或当前用户目录)

文件说明

1
2
3
4
5
6
nginx nginx程序目录
application.yml 应用配置文件
reverse-proxy.db 数据库文件
reverse-proxy.jar java主程序
start.bat 启动脚本
stop.bat 停止脚本

启动前需要修改的

用文本编辑器(不要用系统自带的记事本)打开application.yml

修改默认管理账号和密码(默认都是admin):

1
2
3
admin:
username: 自定义的账号
password: 自定义的密码

修改程序的启动端口(默认8999):

1
2
server:
port: 8999

启动

双击start.bat启动程序

启动后访问 http://localhost:8999 ,点击管理跳转到管理页面,输入配置的账号和密码进行登录。

停止

双击stop.bat停止程序

配置一个代理

点击左上角的➕图标,会弹出新增代理的弹出框,如图:

上图所配置的是mysql的访问代理

原来用过jdbc:mysql://192.168.2.222:3306/才能连接的数据库现在可以用jdbc:mysql://localhost:7777/连接了。

当然实际使用中不会使用localhost去访问,而是使用你reverse-proxy所在的机器ip。

点击确定后页面上会列出这条代理,如图:

在上图中可以看到这一条数据有启用、管理、修改和删除四项功能,修改和删除没有什么可解释的。

点击启用开关后开关会变为灰色,表示这条配置不会生效。

管理按钮点击后会弹出允许使用代理的ip配置弹框,如图所示:

点击➕可以输入ip(只能是ip,不能填写域名)

ip的填写格式有两种:

第一种是192.168.2.333这样的单个ip

第二种是192.168.2.0/24这样的网段,表示任意192.168.2.*的ip都允许使用代理。

保存后关闭窗口即可

接下来我们需要在主页面上点击启动Nginx按钮,等待nginx启动完成我们的配置就生效了。

第一次启动会弹出防火墙确认,如下图所示,点击允许即可。

页面刷新后启动nginx按钮消失,会出现应用配置和停止nginx按钮,当修改了代理配置后需要点击应用配置按钮使配置生效。

点击返回查看页面可以预览代理配置的所有信息(如下图所示),此页面访问无需登录。

问题反馈

issue

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

点击广告就可以打赏拉~~~