nginx 웹 구성 도구
QQ 기술 교류 그룹 1: 1106758598
QQ 기술 교류 그룹 2: 560797506
이메일: [email protected]
공식 홈페이지 주소: https://www.nginxwebui.cn
전문 버전 주소: https://pro.nginxwebui.cn
기티: https://gitee.com/cym1102/nginxWebUI
Github: https://github.com/cym1102/nginxWebUI
비디오 튜토리얼: https://www.bilibili.com/video/BV18A4y1D7GZ
위챗 기부 QR 코드
nginxWebUI는 nginx 구성을 위한 그래픽 관리 도구로, 웹 페이지를 사용하여 http 프로토콜 전달, TCP 프로토콜 전달, 역방향 프록시, 로드 밸런싱, 정적 HTML 서버, 자동 SSL 인증서 적용 및 갱신을 포함한 다양한 nginx 기능을 빠르게 구성할 수 있습니다. 구성 후 nginx.conf 파일을 한 번에 생성할 수 있습니다. 동시에 nginx는 이 파일을 사용하여 시작하고 다시 로드하여 nginx의 그래픽 제어 폐쇄 루프를 완료하도록 제어할 수 있습니다.
nginxWebUI는 또한 한 번의 클릭으로 언제든지 nginx 구성을 위해 해당 서버로 전환할 수 있으며, 한 번의 클릭으로 특정 서버의 구성을 다른 서버와 동기화하여 클러스터 관리를 용이하게 할 수도 있습니다.
nginx 자체에는 복잡한 기능이 있습니다. nginxWebUI는 nginx의 모든 기능을 다루지는 않지만, 플랫폼에서 다루지 않는 nginx 구성 항목의 90%를 다룰 수 있습니다. .conf 파일.
이 프로젝트를 배포한 후에는 더 이상 nginx를 구성하기 위해 온라인으로 구성 코드를 검색할 필요가 없습니다. SSL 인증서를 수동으로 신청하고 구성하기만 하면 쉽게 구성하고 확인할 수 있습니다. nginx를 시작하세요.
이 프로젝트는 solon의 웹 시스템을 기반으로 하며 데이터베이스는 sqlite를 사용하므로 서버에 데이터베이스를 설치할 필요가 없습니다.
이 시스템은 Let's encrypt를 통해 인증서를 적용하며 자동 적용 및 갱신을 위해 acme.sh 스크립트를 사용합니다. 갱신이 가능한 인증서는 매일 오전 2시에 갱신됩니다. 60일 이상 지난 인증서만 갱신됩니다. Linux에서 발행된 것이 지원됩니다.
tcp/ip 전달 구성에 대한 지원을 추가할 때 일부 낮은 버전의 nginx를 다시 컴파일해야 할 수 있으며 –with-stream 매개변수를 추가하여 스트림 모듈을 사용하여 설치를 지정할 수 있습니다. 그러나 Ubuntu 18.04에서는 공식에서 nginx를 사용합니다. 소프트웨어 라이브러리에는 이미 스트림 모듈이 있으므로 다시 컴파일할 필요가 없습니다. 이 시스템에 tcp 전달 항목이 구성된 경우 ngx_stream_module.so의 구성 항목이 활성화되지 않으면 최적화를 위해 도입되지 않습니다. ngnix 구성 파일을 최대 범위로 확장합니다.
전문 버전 주소: https://pro.nginxwebui.cn
기능 | 프로페셔널 버전 | 오픈 소스 버전 |
---|---|---|
기본 매개변수 구성 | √ | √ |
http 매개변수 구성 | √ | √ |
역방향 프록시 구성 | √ | √ |
스트림 매개변수 구성 | √ | √ |
부하 분산 구성 | √ | √ |
매개변수 템플릿 | √ | √ |
정적 웹페이지 업로드 | √ | √ |
비밀번호 파일 관리 | √ | √ |
블랙리스트 IP | √ | √ |
인증서 신청 | √ | √ |
API 인터페이스 문서 | √ | √ |
원격 관리 | √ | √ |
노드 및 그룹의 통합 관리 | √ | × |
노드 구성 파일의 통합 동기화 | √ | × |
노드 정보 데이터 수집 | √ | × |
노드 상태 통계 | √ | × |
캐시 구성 | √ | × |
nginx 로그 수집 | √ | × |
nginx 로그 보기 | √ | × |
nginx 로그 통계 | √ | × |
nginx 트래픽 통계 | √ | × |
우분투 운영체제를 예로 들면,
참고: 이 프로젝트에는 루트 사용자로 시스템 명령을 실행해야 하므로 해커가 악용하기 매우 쉽습니다. 비밀번호를 복잡한 비밀번호로 변경하세요.
1. 자바 환경과 nginx 설치
우분투:
apt update
apt install openjdk-11-jdk
apt install nginx
센토스:
yum install java-11-openjdk
yum install nginx
윈도우:
下载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.5/nginxWebUI-4.2.5.jar
Windows: 直接使用浏览器下载 https://gitee.com/cym1102/nginxWebUI/releases/download/4.2.5/nginxWebUI-4.2.5.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=루트 데이터베이스 사용자
--spring.datasource.password=데이터베이스 비밀번호 전달
Linux 명령 끝에 앰퍼샌드를 추가하여 프로젝트가 백그라운드에서 실행 중임을 나타냅니다.
본 프로젝트에서는 nginx, nginxWebUI 등 x86_64/arm64/arm v7 플랫폼을 지원하고, nginx의 관리 및 운영을 통합하는 도커 이미지를 제작했습니다.
1. 도커 컨테이너 환경 설치
우분투:
apt install docker.io
센토스:
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
알아채다:
컨테이너를 시작할 때 --net=host 매개변수를 사용하여 로컬 포트를 직접 매핑하세요. 내부 nginx는 모든 포트를 사용할 수 있으므로 로컬 머신의 모든 포트를 매핑해야 합니다.
컨테이너는 /home/nginxWebUI:/home/nginxWebUI 경로를 매핑해야 합니다. 데이터베이스, nginx 구성 파일, 로그, 인증서 등을 포함하여 프로젝트의 모든 데이터 파일이 이 경로에 저장됩니다. 이미지를 업그레이드할 때 이 디렉터리는 프로젝트 데이터가 손실되지 않았는지 확인하십시오. 백업에 유의하세요.
-e BOOT_OPTIONS 매개변수는 Java 시작 매개변수를 채울 수 있으며 이 매개변수를 사용하여 포트 번호를 수정할 수 있습니다.
--server.port가 포트를 차지합니다. 채워지지 않으면 기본적으로 포트 8080에서 시작됩니다.
또 다른 : 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 .
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 매개변수 구성에서는 http 전달을 위한 nginx의 http 프로젝트를 구성할 수 있으며, 기본적으로 몇 가지 공통 구성이 제공되며, 기타 필수 구성은 자유롭게 추가, 삭제, 수정 및 체크하여 로그를 생성할 수 있습니다. 파일.
nginx의 스트림 프로젝트 매개변수는 TCP 매개변수 구성에서 구성할 수 있지만 대부분의 경우에는 필요하지 않습니다.
리버스 프록시에서는 nginx의 리버스 프록시, 즉 서버 기능을 설정할 수 있으며, 웹 페이지에서 pem 파일과 키 파일을 직접 업로드하거나, 시스템에 적용된 인증서를 사용해 직접 사용할 수도 있습니다. http에서 https 기능을 활성화하면 http2 프로토콜도 활성화할 수 있습니다.
로드 밸런싱에서는 업스트림 기능인 nginx의 로드 밸런싱 기능을 구성할 수 있으며, 역방향 프록시 관리에서는 구성된 로드 밸런싱이 될 프록시 대상을 선택할 수 있습니다.
html 정적 파일 업로드에서는 html 압축 패키지를 지정된 경로에 직접 업로드할 수 있습니다. 업로드 후 리버스 프록시에서 직접 사용할 수 있으므로 Linux에서 html 파일을 업로드할 필요가 없습니다.
인증서 관리에 인증서를 추가하고 발급 및 갱신할 수 있습니다. 예약 갱신이 활성화된 후 시스템은 만료 예정인 인증서를 자동으로 갱신합니다. 참고: 인증서는 acme.sh의 DNS 모드를 사용하여 발급됩니다. 사용하려면 Alibaba Cloud의 aliKey 및 aliSecret과의 협력이 필요합니다. 먼저 aliKey 및 aliSecret을 신청하세요.
백업 파일 관리, 여기에서 nginx.cnf의 백업 기록 버전을 볼 수 있습니다. nginx에서 오류가 발생하면 특정 기록 버전으로 롤백하도록 선택할 수 있습니다.
conf 파일이 최종적으로 생성되고 여기에서 추가 수동 수정이 가능합니다. 수정 사항이 올바른지 확인한 후 로컬 conf 파일을 덮어쓰고 확인하고 다시 시작할 수 있습니다. 단일 nginx.conf 파일을 생성하거나 각각을 분리할 수 있습니다. 아래의 도메인 이름에 따라 conf의 구성 파일.
원격 서버 관리, 여러 개의 nginx 서버가 있는 경우 모든 nginxWebUI를 배포한 다음 그 중 하나에 로그인하고 원격 관리에 다른 서버의 IP와 사용자 이름 및 비밀번호를 추가하고 모든 nginx 서버를 관리할 수 있습니다. 하나의 기계.
특정 서버의 데이터 구성 및 인증서 파일을 다른 서버와 동기화할 수 있는 원클릭 동기화 기능 제공
이 시스템은 http 인터페이스 호출을 제공합니다. http://xxx.xxx.xxx.xxx:8080/doc.html을 열어 smart-doc 인터페이스 페이지를 확인하세요.
인터페이스 호출은 http 요청 헤더에 토큰을 추가해야 합니다. 토큰을 얻으려면 먼저 관리자 관리에서 사용자 인터페이스 호출 권한을 열고 사용자 이름과 비밀번호를 통해 토큰 인터페이스를 호출하여 토큰을 얻어야 합니다. .
로그인 비밀번호를 잊어버렸거나 2단계 인증 QR 코드를 저장하지 않은 경우 아래 튜토리얼에 따라 비밀번호를 재설정하고 2단계 인증을 끌 수 있습니다.
1.jar 설치 방법, 명령어 실행
java -jar /home/nginxWebUI/nginxWebUI.jar --project.home=/home/nginxWebUI/ --project.findPass=true
--project.home은 프로젝트 파일이 있는 디렉터리이거나 docker 컨테이너를 사용할 경우 매핑 디렉터리입니다.
--project.findPass는 사용자 이름과 비밀번호를 인쇄할지 여부입니다.
작업이 성공적으로 완료되면 모든 사용자 이름과 비밀번호를 재설정 및 인쇄하고 2단계 인증을 끌 수 있습니다.
2. Docker 설치 방법, 먼저 명령을 실행하여 docker 컨테이너를 입력합니다. 여기서 {ID}는 컨테이너의 ID입니다.
docker exec -it {ID} /bin/sh
명령을 다시 실행하십시오.
java -jar /home/nginxWebUI.jar --project.findPass=true
작업이 성공적으로 완료되면 모든 사용자 이름과 비밀번호를 재설정 및 인쇄하고 2단계 인증을 끌 수 있습니다.