使用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:    [email protected]
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
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