使用NginxProxyManager来代理你的服务

简介

内网里大部分的服务都是使用nginx去做代理的,nginx的配置其实还算方便,但是还不够方便,于是就看到了Nginx Proxy Manager,可以使用图形界面去配置代理,目前使用下来,出了不能配置负载均衡,其他一切感觉良好

Nginx Proxy Manager的功能

介绍下功能

首先就是可以直接去申请Let’s Encrypt 的证书,但是因为我在中国,申请的时候会受网络的影响导致申请不成功

其次就是配置访问的黑白名单,目前这个对于我来说没啥用

然后就是可以配置四层stream代理,7层http代理,重定向,还有就是404主机

支持多用户,操作日志,默认主机等功能

目前除了负载均衡,详细的其他功能都ok,界面也很漂亮,表示会长期关注这个项目并且会使用下去

项目地址

https://github.com/jc21/nginx-proxy-manager

搭建

没有什么事情是一个docker-compose.yaml所不能解决的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:2.9.7'
restart: always
ports:
- '0.0.0.0:80:80'
- '0.0.0.0:81:81'
- '0.0.0.0:443:443'
- '0.0.0.0:8080:8080'
environment:
DB_MYSQL_HOST: ""
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "root"
DB_MYSQL_PASSWORD: ""
DB_MYSQL_NAME: ""
DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
- ./nginx.conf:/etc/nginx/nginx.conf

个人推荐最好把nginx.conf挂载出来方便去自定义一些东西,后端的mysql还是使用自己的吧,或者你也可以搭建一个

之后直接访问主机的81端口就好了,默认的用户名密码

1
2
Email:    admin@example.com
Password: changeme

使用prometheus监控

data/nginx/custom下面创建一个

http.conf

然后加入

1
2
3
4
5
6
7
8
9
10
server {
listen 8080;
server_name 192.168.1.1;
# http_stub_status_module 状态
location = /stub_status {
stub_status on;
allow all;
#deny all;
}
}

之后访问ip:8080/stub_status就可以看到http_stub_status_module的页面了

接着就是使用nginx-prometheus-exporter去把这个页面转换问mertics的页面,所以再来一个compose

1
2
3
4
5
6
7
8
9
10
11
version: "3"
services:
nginx-prometheus-exporter:
image: "nginx/nginx-prometheus-exporter:0.9.0"
container_name: "nginx-prometheus-exporter"
restart: "always"
ports:
- "0.0.0.0:9113:9113"
command:
- -nginx.scrape-uri=http://192.168.1.1:8080/stub_status

欢迎关注我的博客www.bboy.app

Have Fun

欢迎关注我的其它发布渠道