Code Monkey home page Code Monkey logo

nginxwebui's Introduction

nginxWebUI

介绍

nginx网页配置工具

QQ技术交流群1: 1106758598

QQ技术交流群2: 560797506

邮箱: [email protected]

官网地址: https://www.nginxwebui.cn

专业版地址: https://pro.nginxwebui.cn

Gitee: https://gitee.com/cym1102/nginxWebUI

Github: https://github.com/cym1102/nginxWebUI

视频教程: https://www.bilibili.com/video/BV18A4y1D7GZ

微信捐赠二维码

功能说明

nginxWebUI是一款图形化管理nginx配置得工具, 可以使用网页来快速配置nginx的各项功能, 包括http协议转发, tcp协议转发, 反向代理, 负载均衡, 静态html服务器, ssl证书自动申请、续签、配置等, 配置好后可一建生成nginx.conf文件, 同时可控制nginx使用此文件进行启动与重载, 完成对nginx的图形化控制闭环.

nginxWebUI也可管理多个nginx服务器集群, 随时一键切换到对应服务器上进行nginx配置, 也可以一键将某台服务器配置同步到其他服务器, 方便集群管理.

nginx本身功能复杂, nginxWebUI并不能涵盖nginx所有功能, 但能覆盖nginx日常90%的功能使用配置, 平台没有涵盖到的nginx配置项, 可以使用自定义参数模板, 在conf文件中生成配置独特的参数。

部署此项目后, 配置nginx再也不用上网各种搜索配置代码, 再也不用手动申请和配置ssl证书, 只需要在本项目中进行增删改查就可方便的配置和启动nginx。

技术说明

本项目是基于solon的web系统, 数据库使用sqlite, 因此服务器上不需要安装任何数据库

本系统通过Let's encrypt申请证书, 使用acme.sh脚本进行自动化申请和续签, 开启续签的证书将在每天凌晨2点进行续签, 只有超过60天的证书才会进行续签. 只支持在linux下签发证书.

添加tcp/ip转发配置支持时, 一些低版本的nginx可能需要重新编译,通过添加–with-stream参数指定安装stream模块才能使用, 但在ubuntu 18.04下, 官方软件库中的nginx已经带有stream模块, 不需要重新编译. 本系统如果配置了tcp转发项的话, 会自动引入ngx_stream_module.so的配置项, 如果没有开启则不引入, 最大限度优化ngnix配置文件.

专业版与开源版区别

专业版地址: https://pro.nginxwebui.cn

功能 专业版 开源版
基本参数配置
http参数配置
反向代理配置
Stream参数配置
负载均衡配置
参数模板
静态网页上传
密码文件管理
黑白名单IP
证书申请
API接口文档
远程管理
节点及分组统一管理 ×
节点配置文件统一同步 ×
节点信息数据采集 ×
节点状态统计 ×
缓存配置 ×
nginx日志采集 ×
nginx日志查看 ×
nginx日志统计 ×
nginx流量统计 ×

jar安装说明

以Ubuntu操作系统为例,

注意:本项目需要在root用户下运行系统命令,极容易被黑客利用,请一定修改密码为复杂密码

1.安装java环境和nginx

Ubuntu:

apt update
apt install openjdk-11-jdk
apt install nginx

Centos:

yum install java-11-openjdk
yum install nginx

Windows:

下载JDK安装包 https://www.oracle.com/java/technologies/downloads/
下载nginx http://nginx.org/en/download.html
配置JAVA环境变量 
JAVA_HOME : JDK安装目录
Path : JDK安装目录\bin
重启电脑

2.下载最新版发行包jar

Linux: mkdir /home/nginxWebUI/ 
       wget -O /home/nginxWebUI/nginxWebUI.jar https://gitee.com/cym1102/nginxWebUI/releases/download/4.2.2/nginxWebUI-4.2.2.jar

Windows: 直接使用浏览器下载 https://gitee.com/cym1102/nginxWebUI/releases/download/4.2.2/nginxWebUI-4.2.2.jar 到 D:/home/nginxWebUI/nginxWebUI.jar

有新版本只需要修改路径中的版本即可

3.启动程序

Linux: nohup java -jar -Dfile.encoding=UTF-8 /home/nginxWebUI/nginxWebUI.jar --server.port=8080 --project.home=/home/nginxWebUI/ > /dev/null &

Windows: java -jar -Dfile.encoding=UTF-8 D:/home/nginxWebUI/nginxWebUI.jar --server.port=8080 --project.home=D:/home/nginxWebUI/

参数说明(都是非必填)

--server.port 占用端口, 默认以8080端口启动

--project.home 项目配置文件目录,存放数据库文件,证书文件,日志等, 默认为/home/nginxWebUI/

--spring.database.type=mysql 使用其他数据库,不填为使用本地sqlite数据库,可选mysql

--spring.datasource.url=jdbc:mysql://ip:port/nginxwebui 数据库url

--spring.datasource.username=root 数据库用户

--spring.datasource.password=pass 数据库密码

注意Linux命令最后加一个&号, 表示项目后台运行

docker安装说明

本项目制作了docker镜像, 支持 x86_64/arm64/arm v7 平台,同时包含nginx和nginxWebUI在内, 一体化管理与运行nginx.

1.安装docker容器环境

Ubuntu:

apt install docker.io

Centos:

yum install docker

2.拉取镜像:

docker pull cym1102/nginxwebui:latest

或者

docker pull registry.cn-hangzhou.aliyuncs.com/cym19871102/nginxwebui:latest

3.启动容器:

docker run -itd \
  -v /home/nginxWebUI:/home/nginxWebUI \
  -e BOOT_OPTIONS="--server.port=8080" \
  --net=host \
  --restart=always \
  cym1102/nginxwebui:latest
  
或者

docker run -itd \
  -v /home/nginxWebUI:/home/nginxWebUI \
  -e BOOT_OPTIONS="--server.port=8080" \
  --net=host \
  --restart=always \
  registry.cn-hangzhou.aliyuncs.com/cym19871102/nginxwebui:latest

注意:

  1. 启动容器时请使用--net=host参数, 直接映射本机端口, 因为内部nginx可能使用任意一个端口, 所以必须映射本机所有端口.

  2. 容器需要映射路径/home/nginxWebUI:/home/nginxWebUI, 此路径下存放项目所有数据文件, 包括数据库, nginx配置文件, 日志, 证书等, 升级镜像时, 此目录可保证项目数据不丢失. 请注意备份.

  3. -e BOOT_OPTIONS 参数可填充java启动参数, 可以靠此项参数修改端口号

--server.port 占用端口, 不填默认以8080端口启动

  1. 日志默认存放在/home/nginxWebUI/log/nginxWebUI.log

另: 使用docker-compose时配置文件如下

version: "3.2"
services:
  nginxWebUi-server:
    image: cym1102/nginxwebui:latest
    volumes:
      - type: bind
        source: "/home/nginxWebUI"
        target: "/home/nginxWebUI"
    environment:
      BOOT_OPTIONS: "--server.port=8080"
    network_mode: "host"
    restart: always

或者

version: "3.2"
services:
  nginxWebUi-server:
    image: registry.cn-hangzhou.aliyuncs.com/cym19871102/nginxwebui:latest
    volumes:
      - type: bind
        source: "/home/nginxWebUI"
        target: "/home/nginxWebUI"
    environment:
      BOOT_OPTIONS: "--server.port=8080"
    network_mode: "host"
    restart: always

编译说明

使用maven编译打包

mvn clean package

使用docker构建镜像

docker build -t nginxwebui:latest .

添加开机启动

  1. 编辑service配置
vim /etc/systemd/system/nginxwebui.service
[Unit]
Description=NginxWebUI
After=syslog.target
After=network.target
 
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home/nginxWebUI
ExecStart=/usr/bin/java -jar -Dfile.encoding=UTF-8 /home/nginxWebUI/nginxWebUI.jar
Restart=always
 
[Install]
WantedBy=multi-user.target

之后执行

systemctl daemon-reload
systemctl enable nginxwebui.service
systemctl start nginxwebui.service

使用说明

打开 http://xxx.xxx.xxx.xxx:8080 进入主页

输入图片说明

登录页面, 第一次打开会要求初始化管理员账号

输入图片说明

进入系统后, 可在管理员管理里面添加修改管理员账号

输入图片说明

在http参数配置中可以配置nginx的http项目,进行http转发, 默认会给出几个常用配置, 其他需要的配置可自由增删改查. 可以勾选开启日志跟踪, 生成日志文件。

输入图片说明

在TCP参数配置中可以配置nginx的stream项目参数, 大多数情况下可不配.

输入图片说明

在反向代理中可配置nginx的反向代理即server项功能, 可开启ssl功能, 可以直接从网页上上传pem文件和key文件, 或者使用系统内申请的证书, 可以直接开启http转跳https功能,也可开启http2协议

输入图片说明

在负载均衡中可配置nginx的负载均衡即upstream项功能, 在反向代理管理中可选择代理目标为配置好的负载均衡

输入图片说明

在html静态文件上传中可直接上传html压缩包到指定路径,上传后可直接在反向代理中使用,省去在Linux中上传html文件的步骤

输入图片说明

在证书管理中可添加证书, 并进行签发和续签, 开启定时续签后, 系统会自动续签即将过期的证书, 注意:证书的签发是用的acme.sh的dns模式, 需要配合阿里云的aliKey和aliSecret来使用. 请先申请好aliKey和aliSecret

输入图片说明

备份文件管理, 这里可以看到nginx.cnf的备份历史版本, nginx出现错误时可以选择回滚到某一个历史版本

输入图片说明

最终生成conf文件,可在此进行进一步手动修改,确认修改无误后,可覆盖本机conf文件,并进行效验和重启, 可以选择生成单一nginx.conf文件还是按域名将各个配置文件分开放在conf.d下

输入图片说明

远程服务器管理, 如果有多台nginx服务器, 可以都部署上nginxWebUI, 然后登录其中一台, 在远程管理中添加其他服务器的ip和用户名密码, 就可以在一台机器上管理所有的nginx服务器了.

提供一键同步功能, 可以将某一台服务器的数据配置和证书文件同步到其他服务器中

接口开发

本系统提供http接口调用, 打开 http://xxx.xxx.xxx.xxx:8080/doc.html 即可查看smart-doc接口页面.

接口调用需要在http请求header中添加token, 其中token的获取需要先在管理员管理中, 打开用户的接口调用权限, 然后通过用户名密码调用获取token接口, 才能得到token

输入图片说明

找回密码

如果忘记了登录密码或没有保存两步验证二维码,可按如下教程重置密码和关闭两步验证.

1.jar安装方式, 执行命令

java -jar /home/nginxWebUI/nginxWebUI.jar --project.home=/home/nginxWebUI/ --project.findPass=true

--project.home 为项目文件所在目录, 使用docker容器时为映射目录

--project.findPass 为是否打印用户名密码

运行成功后即可重置并打印出全部用户名密码并关闭两步验证

2.docker安装方式, 首先执行进入docker容器的命令, 其中{ID}为容器的id

docker exec -it {ID} /bin/sh

再执行命令

java -jar /home/nginxWebUI.jar --project.findPass=true

运行成功后即可重置并打印出全部用户名密码并关闭两步验证

nginxwebui's People

Contributors

cym1102 avatar dependabot[bot] avatar fzhenmei avatar jimmytinsley avatar kitman0000 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nginxwebui's Issues

Improve development expirience

Hi, project is pretty usefull and looking good please localize documentation (README.md) to english for increase maintainability.

English Version

Hi,

Do you have option to change Language to English, can you please advice me.

Regards,

Mehulkumar Bhatt

个人使用几点建议

首先感谢git主的代码贡献。

个人这两天使用有几点用起来特别不舒服的。
以下仅代表个人观点。
1 . 建议,增加多行批量添加,可以以分号切分,切换表单模式或文本模式。 文本可以自动解析成表单。
2. 建议, 重启nginx ,弹窗可以通过 回车关闭。
3. 建议,菜单歧义,生成conf ,不如叫坐 nginx 管理。
4. 建议,上传静态网页 与 反向代理的功能有关联关系,第一次使用不知道如何去配置静态页,反向代理菜单有些不易理解。
5. 错误,远程服务器-》切换到此服务器 -》 后, 上传证书出现错误。
6. 建议,摸板可以根据已配置的项反向生成摸板。比如现在已经配置好几条了,我想把一些共性配置生成摸板。
7. 建议,提供配置文件配置更新url,由于军用内网环境使用,没有互联网。

建议增加数据安全相关处理。

首先非常感谢作者代码贡献!

产生原因:上传静态页“*.zip” , 选择路径为 程序根目录。
结果: 导致项目数据丢失。
建议:对静态页上传路径限制。或者对已存在文件的路径给与提示信息(覆盖解压、清空解压等)。

2.8.1版本dockers运行,日志追踪功能异常

升级到2.8.1版本后,后台无法正常追踪容器内nginx日志。容器内tail -f /var/log/nginx/access.log可以正常看到日志输出。
image
image

2.7.9版本的镜像是正常的。另外一个小建议,nginx日志可否作为docker容器的stdout输出,这样方便做日志收集。

try files support

目前是否支持单页面的配置? 本人修改了部分源码支持了单页面的配置生成等

怎么做到 sqlite 无需安装即可使用的?

sqlite 不是也需要安装么?为什么这个项目做到了不安装 sqlite 即可使用,是代码里面有自动安装的脚本么?但是我在代码里面没有看到相关的自动安装脚本。

SSL not work with cloudflare.

Certificate gen with token cloudflare : Good

Cer_path 👍
pem: /home/nginxWebUI/cert/.xxx.com.fullchain.cer
key: /home/nginxWebUI/cert/xxx.com.key

config gen ==>

load_module /usr/lib/nginx/modules/ngx_stream_module.so;
pid /home/nginxWebUI/nginx.pid;
worker_processes auto;
events {
worker_connections 1024;
accept_mutex on;
}
http {
include mime.types;
include /home/nginxWebUI/global.d/*;
default_type application/octet-stream;

upstream thanks_cym1102 {
server 192.168.31.181:2021 weight=1 fail_timeout=10s max_fails=1 ;
server 192.168.31.181:2022 weight=1 fail_timeout=10s max_fails=1 down;
server 192.168.31.181:2023 weight=1 fail_timeout=10s max_fails=1 backup;
}
server {
server_name ntcong.com;
listen 443 ssl http2;
ssl_certificate /home/nginxWebUI/cert/xxx.com.fullchain.cer;
ssl_certificate_key /home/nginxWebUI/cert/xxx.com.key;
access_log /home/nginxWebUI/log/xxx.com_access_log;
error_log /home/nginxWebUI/log/xxx.com_error_log;

location / {
  proxy_pass http://thanks_cym1102;
  proxy_set_header X-Real-IP  $remote_addr;
  proxy_set_header X-Forwarded-For $remote_addr;
  proxy_set_header Host $host;
  proxy_redirect off;
}

}

}

Error: Exceeded maxRedirects. Probably stuck in a redirect loop https://xxx.com/wp-admin/

https跳轉設置建議

image

對此項設置有以下建議: 1. 該設置實際含義為「從此處設置的端口跳轉至正在監聽的域名端口」,但是從設置的表述中較難看出實際含義,希望可以更改一下表述,如「http監聽端口」或「從該端口跳轉」。 2. 對於使用了端口轉發的情形,所監聽的端口並不等於訪問的端口,此時不能自定義跳轉的端口會造成一些額外的麻煩,希望可以自定義跳轉至的端口(如果可以同時增加http code和域名的自定義功能會更好)

3.1.0 bug

现象

升级最新版之后无法访问页面

image

原因

我给 nginxWebUI 控制台配置的是 https,但是发起的请求却是 http,导致浏览器不发请求

image

image

image

docker安装owncloud 反代

大神好!
刚刚在使用您的nginxWebUI,但是反代总是不成功,请帮看下问题出在哪里

#Doker owncloud 安装在omv机器上,安装omv时自动安装了nginx ,owncloud登录地址10.20.30.150:8082
docker run -d \ --name=owncloud \ -e OWNCLOUD_DOMAIN=localhost:8082 \ -p 8082:8080 \ -v /mnt/owncloud:/mnt/data \ --restart unless-stopped \ owncloud/server:latest
#nginxWebUI的web端口是9080
配置如图
Screen Shot 2022-09-24 at 12 13 29 PM
Screen Shot 2022-09-24 at 12 14 38 PM
路由器端口转发10.20.30.150:8082 到公网(xx.yyy.cn):8443
打开xx.yyy.cn:8443结果如下图(端口转发到10.20.30.150:8443也是一样结果)
Screen Shot 2022-09-24 at 12 21 54 PM

证书申请失败

nginxWebUI: 1.8.2
docker: 19.03.12
DNS服务商:阿里万网

image
image

容器里没有安装 curl wget 导致的

点击更新后中文乱码

点击用户提示里的自动更新按钮自动更新后,界面中文全部乱码,用户提示无法显示
image

环境:

  • Ubuntu 20.04
  • Docker 20.10.12
  • NginxWebUI 3.0.0

异常日志:

2021-12-19T12:31:13.831799191Z process hasn't exited,
2021-12-19T12:31:14.332338877Z process hasn't exited,
2021-12-19T12:31:14.832848688Z process hasn't exited,
2021-12-19T12:31:15.333133940Z process hasn't exited,
2021-12-19T12:31:15.833429696Z process hasn't exited,
2021-12-19T12:31:16.333749705Z process hasn't exited,
2021-12-19T12:31:16.834011073Z process hasn't exited,
2021-12-19T12:31:17.335706148Z process hasn't exited,
2021-12-19T12:31:17.836331176Z process hasn't exited,
2021-12-19T12:31:18.338587819Z process hasn't exited,
2021-12-19T12:31:18.837094517Z process hasn't exited,
2021-12-19T12:31:19.337688816Z process hasn't exited,
2021-12-19T12:31:19.838153209Z process hasn't exited,
2021-12-19T12:31:20.338375437Z process hasn't exited,
2021-12-19T12:31:20.838679141Z process hasn't exited,
2021-12-19T12:31:21.338909160Z process hasn't exited,
2021-12-19T12:31:21.839295103Z process hasn't exited,
2021-12-19T12:31:22.339540513Z process hasn't exited,
2021-12-19T12:31:22.839805913Z process hasn't exited,
2021-12-19T12:31:23.340177848Z process hasn't exited,
2021-12-19T12:31:23.840766461Z process hasn't exited,
2021-12-19T12:31:24.341275382Z process hasn't exited,
2021-12-19T12:31:24.841563001Z process hasn't exited,
2021-12-19T12:31:25.341818645Z process hasn't exited,
2021-12-19T12:31:25.842081165Z process hasn't exited,
2021-12-19T12:31:26.342349018Z process hasn't exited,
2021-12-19T12:31:26.842606337Z process hasn't exited,
2021-12-19T12:31:27.342996462Z process hasn't exited,
2021-12-19T12:31:27.844091923Z process hasn't exited,
2021-12-19T12:31:28.344604478Z process hasn't exited,
2021-12-19T12:31:28.845167573Z process hasn't exited,
2021-12-19T12:31:29.347232379Z process hasn't exited,
2021-12-19T12:31:29.845703481Z process hasn't exited,
2021-12-19T12:31:30.346018240Z process hasn't exited,
2021-12-19T12:31:30.846676728Z process hasn't exited,
2021-12-19T12:31:31.347233154Z process hasn't exited,
2021-12-19T12:31:31.847740565Z process hasn't exited,
2021-12-19T12:31:32.348059160Z process hasn't exited,
2021-12-19T12:31:32.848572764Z process hasn't exited,
2021-12-19T12:31:33.348832127Z process hasn't exited,
2021-12-19T12:31:33.849123561Z process hasn't exited,
2021-12-19T12:31:34.349428634Z process hasn't exited,
2021-12-19T12:31:34.850001141Z process hasn't exited,
2021-12-19T12:31:35.350548634Z process hasn't exited,
2021-12-19T12:31:35.850794360Z process hasn't exited,
2021-12-19T12:31:36.351102614Z process hasn't exited,
2021-12-19T12:31:36.851652071Z process hasn't exited,
2021-12-19T12:31:37.352233532Z process hasn't exited,
2021-12-19T12:31:37.852428562Z process hasn't exited,
2021-12-19T12:31:38.352783422Z process hasn't exited,
2021-12-19T12:31:38.853373910Z process hasn't exited,
2021-12-19T12:31:39.353970497Z process hasn't exited,
2021-12-19T12:31:39.854505474Z process hasn't exited,
2021-12-19T12:31:40.355132352Z process hasn't exited,
2021-12-19T12:31:40.855638948Z process hasn't exited,
2021-12-19T12:31:41.356146794Z process hasn't exited,
2021-12-19T12:31:41.856661013Z process hasn't exited,
2021-12-19T12:31:42.357118074Z process hasn't exited,
2021-12-19T12:31:42.857541517Z process hasn't exited,
2021-12-19T12:31:43.358072416Z process hasn't exited,
2021-12-19T12:31:43.858612209Z process hasn't exited,
2021-12-19T12:31:44.359150476Z process hasn't exited,
2021-12-19T12:31:44.859716889Z process hasn't exited,
2021-12-19T12:31:45.360327197Z process hasn't exited,
2021-12-19T12:31:45.860850263Z process hasn't exited,
2021-12-19T12:31:46.361057754Z process hasn't exited,
2021-12-19T12:31:46.861644460Z process hasn't exited,
2021-12-19T12:31:47.362116957Z process hasn't exited,
2021-12-19T12:31:47.862373020Z process hasn't exited,
2021-12-19T12:31:48.362756982Z process hasn't exited,
2021-12-19T12:31:48.863259570Z process hasn't exited,
2021-12-19T12:31:49.368127250Z process hasn't exited,
2021-12-19T12:31:49.868032903Z process hasn't exited,
2021-12-19T12:31:50.368310199Z process hasn't exited,
2021-12-19T12:31:50.868859858Z process hasn't exited,
2021-12-19T12:31:51.369346954Z process hasn't exited,
2021-12-19T12:31:51.869571313Z process hasn't exited,
2021-12-19T12:31:52.369889962Z process hasn't exited,
2021-12-19T12:31:52.870423401Z process hasn't exited,
2021-12-19T12:31:53.371008161Z process hasn't exited,
2021-12-19T12:31:53.871553290Z process hasn't exited,
2021-12-19T12:31:54.372106668Z process hasn't exited,
2021-12-19T12:31:54.874430401Z process hasn't exited,
2021-12-19T12:31:55.372907434Z process hasn't exited,
2021-12-19T12:31:55.873221796Z process hasn't exited,
2021-12-19T12:31:56.373608694Z process hasn't exited,
2021-12-19T12:31:56.874144734Z process hasn't exited,
2021-12-19T12:31:57.374696600Z process hasn't exited,
2021-12-19T12:31:57.876217895Z process hasn't exited,
2021-12-19T12:31:58.375207924Z process hasn't exited,
2021-12-19T12:31:58.877156861Z process hasn't exited,
2021-12-19T12:31:59.375965260Z process hasn't exited,
2021-12-19T12:31:59.876271843Z process hasn't exited,
2021-12-19T12:32:00.380632755Z process hasn't exited,
2021-12-19T12:32:00.881426412Z process hasn't exited,
2021-12-19T12:32:01.381835054Z process hasn't exited,
2021-12-19T12:32:01.883469006Z process hasn't exited,
2021-12-19T12:32:02.382401269Z process hasn't exited,
2021-12-19T12:32:02.883418991Z process hasn't exited,
2021-12-19T12:32:03.385613311Z process hasn't exited,
2021-12-19T12:32:03.884553485Z process hasn't exited,
2021-12-19T12:32:04.384893955Z process hasn't exited,
2021-12-19T12:32:04.885065362Z process hasn't exited,
2021-12-19T12:32:05.385991651Z process hasn't exited,
2021-12-19T12:32:05.886572434Z process hasn't exited,
2021-12-19T12:32:06.387645454Z process hasn't exited,
2021-12-19T12:32:06.893553549Z process hasn't exited,
2021-12-19T12:32:07.394204734Z process hasn't exited,
2021-12-19T12:32:07.895113980Z process hasn't exited,
2021-12-19T12:32:08.395698031Z process hasn't exited,
2021-12-19T12:32:08.896338852Z process hasn't exited,
2021-12-19T12:32:09.397302345Z process hasn't exited,
2021-12-19T12:32:09.897774201Z process hasn't exited,
2022-01-02T04:55:24.237867792Z org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe,
2022-01-02T04:55:24.238711879Z 	at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:310),
2022-01-02T04:55:24.238722727Z 	at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:273),
2022-01-02T04:55:24.238725907Z 	at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:118),
2022-01-02T04:55:24.238729094Z 	at org.springframework.session.web.http.OnCommittedResponseWrapper$SaveContextServletOutputStream.flush(OnCommittedResponseWrapper.java:499),
2022-01-02T04:55:24.238733036Z 	at javax.imageio.stream.FileCacheImageOutputStream.close(FileCacheImageOutputStream.java:238),
2022-01-02T04:55:24.238735660Z 	at javax.imageio.ImageIO.write(ImageIO.java:1590),
2022-01-02T04:55:24.238738394Z 	at com.wf.captcha.SpecCaptcha.graphicsImage(SpecCaptcha.java:85),
2022-01-02T04:55:24.238741008Z 	at com.wf.captcha.SpecCaptcha.out(SpecCaptcha.java:45),
2022-01-02T04:55:24.238743538Z 	at com.wf.captcha.utils.CaptchaUtil.out(CaptchaUtil.java:122),
2022-01-02T04:55:24.238747124Z 	at com.cym.controller.adminPage.LoginController.getCode(LoginController.java:273),
2022-01-02T04:55:24.238749893Z 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method),
2022-01-02T04:55:24.238752544Z 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62),
2022-01-02T04:55:24.238755101Z 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43),
2022-01-02T04:55:24.238758695Z 	at java.lang.reflect.Method.invoke(Method.java:498),
2022-01-02T04:55:24.238761338Z 	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205),
2022-01-02T04:55:24.238763919Z 	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150),
2022-01-02T04:55:24.238766513Z 	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117),
2022-01-02T04:55:24.238769122Z 	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895),
2022-01-02T04:55:24.238771731Z 	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808),
2022-01-02T04:55:24.238774355Z 	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87),
2022-01-02T04:55:24.238776929Z 	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067),
2022-01-02T04:55:24.238781326Z 	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963),
2022-01-02T04:55:24.238801165Z 	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006),
2022-01-02T04:55:24.238803886Z 	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898),
2022-01-02T04:55:24.238806193Z 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:655),
2022-01-02T04:55:24.238808478Z 	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883),
2022-01-02T04:55:24.238810790Z 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764),
2022-01-02T04:55:24.238813074Z 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227),
2022-01-02T04:55:24.238815406Z 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162),
2022-01-02T04:55:24.238817715Z 	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53),
2022-01-02T04:55:24.238820081Z 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189),
2022-01-02T04:55:24.238822443Z 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162),
2022-01-02T04:55:24.238824761Z 	at com.github.xiaoymin.knife4j.spring.filter.ProductionSecurityFilter.doFilter(ProductionSecurityFilter.java:45),
2022-01-02T04:55:24.238827265Z 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189),
2022-01-02T04:55:24.238829579Z 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162),
2022-01-02T04:55:24.238832045Z 	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100),
2022-01-02T04:55:24.238834369Z 	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117),
2022-01-02T04:55:24.238836706Z 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189),
2022-01-02T04:55:24.238839016Z 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162),
2022-01-02T04:55:24.238841467Z 	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93),
2022-01-02T04:55:24.238843776Z 	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117),
2022-01-02T04:55:24.238846075Z 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189),
2022-01-02T04:55:24.238848412Z 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162),
2022-01-02T04:55:24.238851300Z 	at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:142),
2022-01-02T04:55:24.238853759Z 	at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:82),
2022-01-02T04:55:24.238856091Z 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189),
2022-01-02T04:55:24.238861871Z 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162),
2022-01-02T04:55:24.238864264Z 	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201),
2022-01-02T04:55:24.238866601Z 	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117),
2022-01-02T04:55:24.238868990Z 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189),
2022-01-02T04:55:24.238871325Z 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162),
2022-01-02T04:55:24.238873625Z 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197),
2022-01-02T04:55:24.238875907Z 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97),
2022-01-02T04:55:24.238878199Z 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540),
2022-01-02T04:55:24.238880495Z 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135),
2022-01-02T04:55:24.238882765Z 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92),
2022-01-02T04:55:24.238885039Z 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78),
2022-01-02T04:55:24.238887330Z 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357),
2022-01-02T04:55:24.238889620Z 	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382),
2022-01-02T04:55:24.238891899Z 	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65),
2022-01-02T04:55:24.238894274Z 	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895),
2022-01-02T04:55:24.238901052Z 	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1732),
2022-01-02T04:55:24.238903394Z 	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49),
2022-01-02T04:55:24.238905848Z 	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191),
2022-01-02T04:55:24.238908164Z 	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659),
2022-01-02T04:55:24.238910853Z 	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61),
2022-01-02T04:55:24.238913364Z 	at java.lang.Thread.run(Thread.java:748),
2022-01-02T04:55:24.238915643Z Caused by: java.io.IOException: Broken pipe,
2022-01-02T04:55:24.238917904Z 	at sun.nio.ch.FileDispatcherImpl.write0(Native Method),
2022-01-02T04:55:24.238920297Z 	at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47),
2022-01-02T04:55:24.238922576Z 	at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93),
2022-01-02T04:55:24.238925025Z 	at sun.nio.ch.IOUtil.write(IOUtil.java:65),
2022-01-02T04:55:24.238927238Z 	at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:470),
2022-01-02T04:55:24.238932787Z 	at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:135),
2022-01-02T04:55:24.238936399Z 	at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1373),
2022-01-02T04:55:24.238939811Z 	at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:766),
2022-01-02T04:55:24.238943230Z 	at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:719),
2022-01-02T04:55:24.248636753Z 	at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:709),
2022-01-02T04:55:24.248904213Z 	at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.flush(Http11OutputBuffer.java:573),
2022-01-02T04:55:24.248910535Z 	at org.apache.coyote.http11.filters.ChunkedOutputFilter.flush(ChunkedOutputFilter.java:157),
2022-01-02T04:55:24.249060557Z 	at org.apache.coyote.http11.Http11OutputBuffer.flush(Http11OutputBuffer.java:221),
2022-01-02T04:55:24.249153113Z 	at org.apache.coyote.http11.Http11Processor.flush(Http11Processor.java:1205),
2022-01-02T04:55:24.249245133Z 	at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:402),
2022-01-02T04:55:24.249447640Z 	at org.apache.coyote.Response.action(Response.java:209),
2022-01-02T04:55:24.249647398Z 	at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:306),
2022-01-02T04:55:24.249652784Z 	... 66 more,

就是这样了,不知道是不是我的配置问题还是应用问题,总之我先暂时用英文界面了。

移动端网页自适应优化请求

在移动端chrome下无法自适应屏幕 部分关键性按钮都被遮挡且不能通过滑动或缩放来使其正常显示。希望可以在下个版本中优化css样式或添加全局自适应参数 当然如果主题metro化就更棒了
Uploading IMG_20220825_045602.jpg…

乱码

启动后页面出现中文乱码问题

泛域名证书问题

版本:3.3.5
申请泛域名证书时配置的域名为:*.xxxx.com
自动配置的证书名为:*.xxxx.com.fullchain.cer
但实际生成的证书名为:.xxxx.com.fullchain.cer
这就导致nginx找不到证书,每次都要都手动改

web UI里面删除证书后,证书文件不一起删除

大佬
1.web UI里面删除证书后,证书文件不一起删除,给个文件管理界面我们自己删除也行啊。。。就留在里面了,难受的很
2. 申请证书的界面,华为云,三个空分别填啥呀,我试了 Access key。IFM用户名,咋都不对呢,请教一下,麻烦了
image

我用2.x的webui能登录,但是用3.x的不行,一片空白

2.x打完ip+端口自动跳转到:http://ip:port/adminPage/login

3.x一片空白。

用的docker-compose拉的hub.docker上下的镜像,3.x的下了两个 一个是3.4.4 一个3.3.x,我观察3.x的镜像都只有90多mb,但2.x有250mb

图片

另外无论2.x还是3.x启动后docker log都是没有启动信息的(2.x操作会有信息),会有错觉误以为启动失败

补充compose内容:

version: '3.9'
services:
  # dashboard
  nginxwebui: &defTmp
    image: cym1102/nginxwebui:2.5.9
    container_name: &S_webui nginxwebui
    hostname: *S_webui
    # restart: always
    privileged: true
    volumes: 
      - ./vol/nginxwebui/data:/home/nginxWebUI
    environment: 
      - BOOT_OPTIONS="--server.port=8080"
    ports:
      - 8089:8080
      # - 9022:22
    # entrypoint:
    #   - /usr/sbin/init
    # network_mode: "host"
    networks:
      - network

一些建议【持续更新】

首先,点您一个大大的赞!项目想法还是很好

14CC82B5

目前正在看项目,想提一些建议:
1、代码规范,例如类似RequestMapping这种都可以换成对应的GetMappding
2、代码里的注释些许少
3、Git提交记录.....,不知道为啥每次看到的都是1
4、看到http配置内 -> 建议配置向导,这部分的参数我理解在后端不需要进行这种判断吧,可以交给前端来做
image
5、参数配置这些都可以加个多选框来做多选删除,因为单个删除真的挺费劲
image
6、前端UI可以用一些高度集成化的UI框架来做,这样对开发也会有一些帮助。例如element、antd、viewUI等【可忽略】
7、我理解类似BaseController内的这部分是否可以去掉,这部分主要是想返回不同的状态给前端,我理解是否可以全局异常拦截来实现,例如:对于未认证、无权限、后端错误等是否可以通过直接抛出异常,之后全局捕获来统一返回Response,而成功的接口可以直接返回void。此外前端也可以用一些ajax工具(如:axios)做一些异常捕获,来实现自定义的错误提示
image

在docker desktop内无法使用该项目

查了相关文档, 似乎时docker desktop的问题, 但是 我这的环境无法使用linux部署, 只能在win10上, 请问有什么其他办法能够解决该问题吗

docker下无法启动程序

日志显示:
2021-11-19 15:47:00.000 INFO 9 --- [taskScheduler-1] cn.craccd.sqlHelper.utils.SqlHelper :
SELECT *
FROM "setting"
WHERE "key" = 'mail'
ORDER BY id DESC limit 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.