mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 02:15:48 +02:00
fix: site add issues
This commit is contained in:
parent
f6768615ab
commit
6b640381e8
12 changed files with 153 additions and 22 deletions
|
@ -29,7 +29,7 @@ export default defineConfig({
|
||||||
nav: [
|
nav: [
|
||||||
{text: 'Home', link: '/'},
|
{text: 'Home', link: '/'},
|
||||||
{text: 'Guide', link: '/guide/about'},
|
{text: 'Guide', link: '/guide/about'},
|
||||||
{text: 'Demo', link: 'https://nginxui.jackyu.cn'}
|
{text: 'Demo', link: 'https://demo.nginxui.com'}
|
||||||
],
|
],
|
||||||
|
|
||||||
sidebar: sidebar(),
|
sidebar: sidebar(),
|
||||||
|
|
|
@ -38,7 +38,7 @@ managing your Nginx server.
|
||||||
|
|
||||||
## Demo
|
## Demo
|
||||||
|
|
||||||
URL:[https://nginxui.jackyu.cn](https://nginxui.jackyu.cn)
|
URL:[https://demo.nginxui.com](https://demo.nginxui.com)
|
||||||
|
|
||||||
- Username:admin
|
- Username:admin
|
||||||
- Password:admin
|
- Password:admin
|
||||||
|
|
|
@ -36,7 +36,7 @@ Nginx UI 是一个全新的 Nginx 网络管理界面,旨在简化 Nginx 服务
|
||||||
|
|
||||||
## 在线预览
|
## 在线预览
|
||||||
|
|
||||||
网址:[https://nginxui.jackyu.cn](https://nginxui.jackyu.cn)
|
网址:[https://demo.nginxui.com](https://demo.nginxui.com)
|
||||||
|
|
||||||
- 用户名:admin
|
- 用户名:admin
|
||||||
- 密码:admin
|
- 密码:admin
|
||||||
|
|
|
@ -5,7 +5,7 @@ import NgxConfigEditor from '@/views/domain/ngx_conf/NgxConfigEditor.vue'
|
||||||
import {useGettext} from 'vue3-gettext'
|
import {useGettext} from 'vue3-gettext'
|
||||||
import domain from '@/api/domain'
|
import domain from '@/api/domain'
|
||||||
import ngx from '@/api/ngx'
|
import ngx from '@/api/ngx'
|
||||||
import {computed, reactive, ref} from 'vue'
|
import {computed, provide, reactive, ref} from 'vue'
|
||||||
import {message} from 'ant-design-vue'
|
import {message} from 'ant-design-vue'
|
||||||
import {useRouter} from 'vue-router'
|
import {useRouter} from 'vue-router'
|
||||||
|
|
||||||
|
@ -38,13 +38,12 @@ function init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function save() {
|
function save() {
|
||||||
ngx.build_config(ngx_config).then(r => {
|
return ngx.build_config(ngx_config).then(r => {
|
||||||
domain.save(ngx_config.name, {name: ngx_config.name, content: r.content, overwrite: true}).then(() => {
|
domain.save(ngx_config.name, {name: ngx_config.name, content: r.content, overwrite: true}).then(() => {
|
||||||
message.success($gettext('Saved successfully'))
|
message.success($gettext('Saved successfully'))
|
||||||
|
|
||||||
domain.enable(ngx_config.name).then(() => {
|
domain.enable(ngx_config.name).then(() => {
|
||||||
message.success($gettext('Enabled successfully'))
|
message.success($gettext('Enabled successfully'))
|
||||||
current_step.value++
|
|
||||||
window.scroll({top: 0, left: 0, behavior: 'smooth'})
|
window.scroll({top: 0, left: 0, behavior: 'smooth'})
|
||||||
}).catch(r => {
|
}).catch(r => {
|
||||||
message.error(r.message ?? $gettext('Enable failed'), 5)
|
message.error(r.message ?? $gettext('Enable failed'), 5)
|
||||||
|
@ -79,6 +78,13 @@ const has_server_name = computed(() => {
|
||||||
|
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
|
provide('save_site_config', save)
|
||||||
|
|
||||||
|
async function next() {
|
||||||
|
await save()
|
||||||
|
current_step.value++
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -129,7 +135,7 @@ const has_server_name = computed(() => {
|
||||||
<a-space v-if="current_step<2">
|
<a-space v-if="current_step<2">
|
||||||
<a-button
|
<a-button
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="save"
|
@click="next"
|
||||||
:disabled="!ngx_config.name||!has_server_name"
|
:disabled="!ngx_config.name||!has_server_name"
|
||||||
>
|
>
|
||||||
<translate>Next</translate>
|
<translate>Next</translate>
|
||||||
|
|
|
@ -48,7 +48,7 @@ async function onchange() {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<obtain-cert ref="obtain_cert" :key="update"/>
|
<obtain-cert ref="obtain_cert" :key="update" @update:auto_cert="r=>enabled=r"/>
|
||||||
<div class="issue-cert">
|
<div class="issue-cert">
|
||||||
<a-form-item :label="$gettext('Encrypt website with Let\'s Encrypt')">
|
<a-form-item :label="$gettext('Encrypt website with Let\'s Encrypt')">
|
||||||
<a-switch
|
<a-switch
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {inject, Ref} from 'vue'
|
import {inject} from 'vue'
|
||||||
import {useGettext} from 'vue3-gettext'
|
import {useGettext} from 'vue3-gettext'
|
||||||
import DNSChallenge from '@/views/domain/cert/components/DNSChallenge.vue'
|
import DNSChallenge from '@/views/domain/cert/components/DNSChallenge.vue'
|
||||||
|
|
||||||
const {$gettext} = useGettext()
|
const {$gettext} = useGettext()
|
||||||
const no_server_name: Ref = inject('no_server_name')!
|
const no_server_name = inject('no_server_name')
|
||||||
const data: Ref = inject('data')!
|
const data = inject('data')
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {useGettext} from 'vue3-gettext'
|
import {useGettext} from 'vue3-gettext'
|
||||||
import {computed, inject, nextTick, provide, reactive, Ref, ref} from 'vue'
|
import {computed, inject, nextTick, provide, reactive, ref} from 'vue'
|
||||||
import websocket from '@/lib/websocket'
|
import websocket from '@/lib/websocket'
|
||||||
import Modal from 'ant-design-vue/lib/modal'
|
import Modal from 'ant-design-vue/lib/modal'
|
||||||
import {message} from 'ant-design-vue'
|
import {message} from 'ant-design-vue'
|
||||||
|
@ -10,6 +10,8 @@ import AutoCertStepOne from '@/views/domain/cert/components/AutoCertStepOne.vue'
|
||||||
|
|
||||||
const {$gettext, interpolate} = useGettext()
|
const {$gettext, interpolate} = useGettext()
|
||||||
|
|
||||||
|
const emit = defineEmits(['update:auto_cert'])
|
||||||
|
|
||||||
const modalVisible = ref(false)
|
const modalVisible = ref(false)
|
||||||
|
|
||||||
const step = ref(1)
|
const step = ref(1)
|
||||||
|
@ -34,10 +36,10 @@ provide('data', data)
|
||||||
|
|
||||||
const logContainer = ref(null)
|
const logContainer = ref(null)
|
||||||
|
|
||||||
const save_site_config: Function = inject('save_site_config')!
|
const save_site_config = inject('save_site_config')!
|
||||||
const no_server_name: Ref = inject('no_server_name')!
|
const no_server_name = inject('no_server_name')!
|
||||||
const props: any = inject('props')!
|
const props: any = inject('props')!
|
||||||
const issuing_cert: Ref<boolean> = inject('issuing_cert')!
|
const issuing_cert = inject('issuing_cert')!
|
||||||
|
|
||||||
async function callback(ssl_certificate: string, ssl_certificate_key: string) {
|
async function callback(ssl_certificate: string, ssl_certificate_key: string) {
|
||||||
props.directivesMap['ssl_certificate'][0]['params'] = ssl_certificate
|
props.directivesMap['ssl_certificate'][0]['params'] = ssl_certificate
|
||||||
|
@ -69,12 +71,13 @@ async function onchange(r: boolean) {
|
||||||
|
|
||||||
v.locations.push(...r.locations)
|
v.locations.push(...r.locations)
|
||||||
})
|
})
|
||||||
|
}).then(async () => {
|
||||||
|
// if ssl_certificate is empty, do not save, just use the config from last step.
|
||||||
|
if (props.directivesMap['ssl_certificate']?.[0]) {
|
||||||
|
await save_site_config()
|
||||||
|
}
|
||||||
|
job()
|
||||||
})
|
})
|
||||||
// if ssl_certificate is empty, do not save, just use the config from last step.
|
|
||||||
if (!props.directivesMap['ssl_certificate']?.[0]) {
|
|
||||||
await save_site_config()
|
|
||||||
}
|
|
||||||
job()
|
|
||||||
} else {
|
} else {
|
||||||
await props.ngx_config.servers.forEach((v: any) => {
|
await props.ngx_config.servers.forEach((v: any) => {
|
||||||
v.locations = v.locations.filter((l: any) => l.path !== '/.well-known/acme-challenge')
|
v.locations = v.locations.filter((l: any) => l.path !== '/.well-known/acme-challenge')
|
||||||
|
@ -82,6 +85,8 @@ async function onchange(r: boolean) {
|
||||||
save_site_config()
|
save_site_config()
|
||||||
change_auto_cert(r)
|
change_auto_cert(r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
emit('update:auto_cert', r)
|
||||||
}
|
}
|
||||||
|
|
||||||
function job() {
|
function job() {
|
||||||
|
|
|
@ -36,9 +36,13 @@ function confirm_change_tls(r: boolean) {
|
||||||
okText: $gettext('OK'),
|
okText: $gettext('OK'),
|
||||||
cancelText: $gettext('Cancel'),
|
cancelText: $gettext('Cancel'),
|
||||||
async onOk() {
|
async onOk() {
|
||||||
await template.get_block('letsencrypt.conf').then(r => {
|
await template.get_block('letsencrypt.conf').then(async r => {
|
||||||
const first = props.ngx_config.servers[0]
|
const first = props.ngx_config.servers[0]
|
||||||
first.locations = first.locations.filter((l: any) => l.path !== '/.well-known/acme-challenge')
|
if (!first.locations) {
|
||||||
|
first.locations = []
|
||||||
|
} else {
|
||||||
|
first.locations = first.locations.filter((l: any) => l.path !== '/.well-known/acme-challenge')
|
||||||
|
}
|
||||||
first.locations.push(...r.locations)
|
first.locations.push(...r.locations)
|
||||||
})
|
})
|
||||||
await save_site_config()
|
await save_site_config()
|
||||||
|
|
24
resources/development/nginx/sites-available/test.nginxui.com
Normal file
24
resources/development/nginx/sites-available/test.nginxui.com
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
server_name test.nginxui.com;
|
||||||
|
location /.well-known/acme-challenge {
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real_IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
|
||||||
|
proxy_pass http://127.0.0.1:5002;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
listen 443 ssl http2;
|
||||||
|
listen [::]:443 ssl http2;
|
||||||
|
server_name test.nginxui.com;
|
||||||
|
ssl_certificate /etc/nginx/ssl/test.nginxui.com/fullchain.cer;
|
||||||
|
ssl_certificate_key /etc/nginx/ssl/test.nginxui.com/private.key;
|
||||||
|
location /.well-known/acme-challenge {
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real_IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
|
||||||
|
proxy_pass http://127.0.0.1:5002;
|
||||||
|
}
|
||||||
|
}
|
1
resources/development/nginx/sites-enabled/test.nginxui.com
Symbolic link
1
resources/development/nginx/sites-enabled/test.nginxui.com
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
/etc/nginx/sites-available/test.nginxui.com
|
|
@ -0,0 +1,64 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
4JGNOuTSCvTLLWKwMvafQxfcfw==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
-----END CERTIFICATE-----
|
27
resources/development/nginx/ssl/test.nginxui.com/private.key
Normal file
27
resources/development/nginx/ssl/test.nginxui.com/private.key
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEowIBAAKCAQEAul5FL77Hvbx4AYTJJpALIIZvrwVIM/jaG3rUqniLp4yzmdv1
|
||||||
|
suN/3mOKtVzOnFOPSSd7tPRTUJGe7ipy0dEnQ/Zq4+q2JB4n/14UTFxrac7muXFt
|
||||||
|
R5+kx3w3igxF99s96mp5QNiYEWyoJGp02F7F+IhLPiSHihLZ2ZCyVac5nDzT4DPV
|
||||||
|
fYvYdd7X01byPlEyx4CqgiC4qx2fXZCTJ5KqzvbwRfiWiipK7TB5su5a90OqyWhS
|
||||||
|
VCI0Rlnd7X6bjbMSchKoJAsYp+84bG+RodAvuK1BERYSJtxq8ZmY8l4Nc91pnVrO
|
||||||
|
LUE3VY15zZoES0AvJYvPzFH8OmcTyOpbkseOVwIDAQABAoIBAEXw6QAhFe7j0xmm
|
||||||
|
zqKVPkfHjBRf5Bf1FU1ozHTpZmfLyv876DppXGyGaODlYniSd1yZ37gqVTYQYFe7
|
||||||
|
QHnzh0vfJ4A/bnmhg5s3oGCD8p+z0SzZH4zYoctnl6RMNNnuwo69xKGMZ41qfLOl
|
||||||
|
7BHjh2JdK/e3V9J+fplCz1qLtngmS9XwE04xKkz1TKARkFaaGvb2tFGaa4xLOViu
|
||||||
|
LXW+Jw93o5bD9+7CnFL+GGXXvm24XogMS/PrzlJW2fnct4U0pwVKeWhDYI5SCbgu
|
||||||
|
RzbSKA4CfhN6NewgGt0FSkcfqGBVNP7+bZurqAq5jNcKi0diECVFf/jg+3riTioS
|
||||||
|
IdtHjFkCgYEA1ebS1F9NwCDAZN5MEB8vpJEkYbzf1p7ieIVM2Jplc/YpOkONcRmY
|
||||||
|
bA0CVa8nimxvkOVs4i216Ek1azTk+v/QYNW92IQH2Pg4fPJUHvlCs792KSyK0mPj
|
||||||
|
CtPNjuGsbTen+rX94C4/+AFN7wFuWdQV0enf+/mmXZfphDSxTL6eRbUCgYEA3ww1
|
||||||
|
g75X0e1kC6CDG+iV1bAHwL9avzE5xWki/f1gCqU7YtHN8rCrvDLErS4guLD6bE05
|
||||||
|
u9GIaHHKO7w/Dsrw0OD16IvH0+3Y2fN+GL9qozOsuwxVRrYJMlkv4C020d++LaEU
|
||||||
|
YBV+wewNQJPzGiPsmAx4x/FYVikwzqQSdqkuC1sCgYAeYGBSbpJhFYWdDYCpzXP7
|
||||||
|
n+0VwDfdh8TLrsqB/DMqK6whLRS6GhNuTM6nEm/AFbQmVJ6I5ErwCO2AIwvdpVSX
|
||||||
|
W+NRCzb+FgoXnGZb27QgSLFkGYJBbJQCpp+Lifrtq7i8PvolywukkbLanU5pjVfn
|
||||||
|
7pmzc/mvUvKDpuQC7RMW/QKBgQCYsyAT8ITo+E+M0jfQLHwfziKQp7B1wjqd1uuY
|
||||||
|
3RUaVKKCdcY8Bw2bi1owgarvJmJbMMd8uOddMcHVAXxeITualNhlewS0J1pVZCiI
|
||||||
|
wss7rc3sRHZBMbC8ImjvXaTxK+9kB6oOWcjs9DDibCd7VurL8YXixGzIl+yNG7B0
|
||||||
|
QkB+jwKBgH2VeXcWWZYdMJ8DuwZIv9qIXiHR78lo0+2grgQCxcZ2VWoW2kMsXUUp
|
||||||
|
sJ/xYVZ25E97zyW+TkoCTEGl6PN7WLgNO42HlasdFRIM4i8+zu+zleOLdkpVtkhU
|
||||||
|
voMnWMqDWRncgwBsap8scdDDt1mSOnr72kyVEpm/qv6tELoKLZXI
|
||||||
|
-----END RSA PRIVATE KEY-----
|
Loading…
Add table
Add a link
Reference in a new issue