diff --git a/ReadMe.md b/ReadMe.md index 1adafbb..7ad029b 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,12 +1,12 @@ # 项目预览 -不知道为什么,图床用的使自己的,Gitee就是不显示其它GitHub和Gitea都能显示就Gitee显示不出来 - -或者把项目clone下来看也可以 +不知道为什么,图床用的使自己的,Gitee就是不显示其它GitHub和Gitea都能显示就Gitee显示不出来,如果想用Gitee就把ReadMe文件下载下来也行;或者把项目clone下来看也可以 **线上地址** -- 正式线上预览地址:http://111.229.137.235/#/welcome +- 正式线上预览地址:http://bunny-web.site/#/welcome + + - 线上地址目前使用的是90天的SSL证书,可能会提示链接不安全,忽略就好了 - 测试预览地址:http://106.15.251.123/#/welcome - 服务器到期时间:12月30日 @@ -177,6 +177,74 @@ FLUSH PRIVILEGES; ![image-20241107133345299](http://116.196.101.14:9000/docs/image-20241107133345299.png) +## 后端日志文件 + +在后端日志文件中,使用了`logback.xml`进行格式化。然而,使用`logback.xml`后,配置文件中指定的日志输出文件位置可能会失效。如果项目是通过Docker部署的,想在宿主机查看日志文件需要进行文件映射。 + +### 使用SpringBoot + +在配置文件中,指定名称和目录路径即可,之后使用docker映射就可以在宿主机看到日志了 + +如果想要用自带需要删除`logback.xml`文件 + +``` +logging: + level: + cn.bunny.service.mapper: warn + cn.bunny.service.controller: warn + cn.bunny.service.service: warn + root: warn + pattern: + dateformat: HH:mm:ss:SSS + file: + path: "logs/${spring.application.name}" + name: "logs/${spring.application.name}" +``` + +### 使用logback.xml + +指定目录的位置`D:/logs/${datetime}/auth-server.log`根据你需要的指定 + +```xml + + + + + + + %cyan([%thread]) %yellow(%-5level) %green(%logger{100}).%boldRed(%method)-%boldMagenta(%line)- %blue(%msg%n) + + + + + + + /www/root/server/logs/${datetime}/auth-server.log + true + + %date{yyyy-MM-dd HH:mm:ss} %-5level %logger{100} %method %line %msg%n + UTF-8 + + +``` + +> 如果按照上面搭建,日志文件会在`/www/root/server/logs`下,即使使Windows系统也会存在,如果docker使用的是文件映射,那么日志文件会在容器相对应的位置 + +如果开发环境或者其他环境也需要日志,可以根据当前环境进行选择`` + +```xml + + + + + + + + + + +``` + # 项目特点 ### 按钮权限显示 @@ -810,59 +878,25 @@ public class MenuIconVo extends BaseUserVo { 使用Docker进行部署,后端接口地址以`/admin`开头,但前端默认请求前缀为`/api`,因此在请求时需要进行替换。详细内容请参考以下【项目部署】说明。 -## 配置相关 +## 前端部署 -### docker文件 +运行`pnpm build` -```dockerfile -# 使用官方的 Nginx 镜像作为基础镜像 -FROM nginx +dockerfile中暴露端口要和生产环境的端口号保持一致 -# 删除默认的 Nginx 配置文件 -RUN rm /etc/nginx/conf.d/default.conf +### 使用http协议 -# 将自定义的 Nginx 配置文件复制到容器中 -COPY nginx.conf /etc/nginx/conf.d/default.conf +如果不使用https,需要将下面内容注释 -# 设置时区,构建镜像时执行的命令 -RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -RUN echo "Asia/Shanghai" > /etc/timezone +![image-20241108152526666](http://116.196.101.14:9000/docs/auth/image-20241108152526666.png) -# 创建一个目录来存放前端项目文件 -WORKDIR /usr/share/nginx/html +对外暴露端口改为`80`或者你自己喜欢的端口 -# 将前端项目打包文件复制到 Nginx 的默认静态文件目录 -COPY dist/ /usr/share/nginx/html -# 复制到nginx目录下 -COPY dist/ /etc/nginx/html +![image-20241108154244339](http://116.196.101.14:9000/docs/auth/image-20241108154244339.png) -# 暴露 Nginx 的默认端口 -EXPOSE 80 +#### NGINX配置 -# 自动启动 Nginx -CMD ["nginx", "-g", "daemon off;"] -``` - -### NGINX文件 - -在请求中会使用代理所以会拿不到用户真实的IP地址,素以在要NGINX侠做下面的配置,这样用户在访问时就可以拿到真实的IP了 - -```nginx -proxy_set_header X-Real-IP $remote_addr; -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -proxy_set_header X-Forwarded-Proto $scheme; -``` - -#### 如果需要使用https协议 - -```dockerfile -COPY bunny-web.site.csr /etc/nginx/bunny-web.site.csr -COPY bunny-web.site.key /etc/nginx/bunny-web.site.key -COPY bunny-web.site_bundle.crt /etc/nginx/bunny-web.site_bundle.crt -COPY bunny-web.site_bundle.pem /etc/nginx/bunny-web.site_bundle.pem -``` - -NGINX的文件 +将NGINX配置修改为以下内容 ```nginx map $http_upgrade $connection_upgrade { @@ -871,73 +905,174 @@ map $http_upgrade $connection_upgrade { } server { - listen 80; - listen [::]:80; - server_name localhost; + listen 80 ; + listen [::]:80; + server_name localhost; - location / { - root /etc/nginx/html; - index index.html index.htm; - try_files $uri /index.html; - } + location / { + root /etc/nginx/html; + index index.html index.htm; + try_files $uri /index.html; + } - # 后端跨域请求 - location ~/admin/ { - proxy_pass http://172.17.0.1:8000; - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } + # 后端跨域请求 + location ~/admin/ { + proxy_pass http://172.17.0.1:8000; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } - error_page 404 404.html; + error_page 404 404.html; - location = /50x.html { - root html; - } + location = /50x.html { + root html; + } } ``` -## 项目部署 +如果你的暴露的端口和我一样是`80` -使用WebStorm进行项目部署,项目上线时默认端口为80。因此,Docker默认暴露的IP端口也应为80,NGINX中默认暴露的端口也是80,三者应一一对应。 +![image-20241108154344561](http://116.196.101.14:9000/docs/auth/image-20241108154344561.png) -若无法下载,请先使用pnpm下载。若不需使用pnpm,请删除或修改相应内容。 +### 使用https协议 -![image-20241026025057129](http://116.196.101.14:9000/docs/auth/undefinedimage-20241026025057129.png) +#### 环境准备 -### docker配置 +需要ssl证书这个是必要的,之后将ssl证书解压 -![image-20241026024116090](http://116.196.101.14:9000/docs/auth/undefinedimage-20241026024116090.png) +![image-20241108145836035](http://116.196.101.14:9000/docs/auth/image-20241108145836035.png) -### 配置环境 +解压后放到docker文件下 -设置启动端口号和项目地址机器后端请求地址 +![image-20241108151141289](http://116.196.101.14:9000/docs/auth/image-20241108151141289.png) -![image-20241026024813858](http://116.196.101.14:9000/docs/auth/undefinedimage-20241026024813858.png) +#### 注意事项 -#### 配置线上环境 +在docker文件中需要将证书相关信息复制到docker容器中,名称对应文件下的文件名,如果你想部署名称肯定是不一样的,当然你可以重命名成和我一样的 -设置项目启动端口号,线上环境默认请求路径为`/admin`,需在NGINX中将访问请求前缀更改为`/admin`。 +```dockerfile +# 将自定义的 Nginx 配置文件复制到容器中 +COPY nginx.conf /etc/nginx/conf.d/default.conf +COPY bunny-web.site.csr /etc/nginx/bunny-web.site.csr +COPY bunny-web.site.key /etc/nginx/bunny-web.site.key +COPY bunny-web.site_bundle.crt /etc/nginx/bunny-web.site_bundle.crt +COPY bunny-web.site_bundle.pem /etc/nginx/bunny-web.site_bundle.pem +``` -![image-20241026024940747](http://116.196.101.14:9000/docs/auth/undefinedimage-20241026024940747.png) +如果使用的是SSL链接将端口号更改下,改成`443` -![image-20241026024243785](http://116.196.101.14:9000/docs/auth/undefinedimage-20241026024243785.png) +![image-20241108151643011](http://116.196.101.14:9000/docs/auth/image-20241108151643011.png) -#### 配置开发环境 +配置NGINX的配置文件,这些文件内容网上都有可以参看腾讯云文档 -开发环境默认IP为7000,若与本地项目端口冲突,请修改。后端请求地址为7070。 +- 证书下载和配置方式:https://cloud.tencent.com/document/product/400/4143?from_cn_redirect=1 +- NGINX搭建SSL链接:https://cloud.tencent.com/document/product/400/35244 -前端设置的请求前缀为`/api`,但后端接受的前缀为`/admin`,因此需在服务中修改此内容。 +```nginx +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} -![image-20241026024318644](http://116.196.101.14:9000/docs/auth/undefinedimage-20241026024318644.png) +server { + #SSL 默认访问端口号为 443 + listen 443 ssl; + #请填写绑定证书的域名 + server_name localhost; + #请填写证书文件的相对路径或绝对路径 + ssl_certificate bunny-web.site_bundle.crt; + #请填写私钥文件的相对路径或绝对路径 + ssl_certificate_key bunny-web.site.key; + ssl_session_timeout 5m; + #请按照以下协议配置 + ssl_protocols TLSv1.2 TLSv1.3; + #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。 + ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; + ssl_prefer_server_ciphers on; -**修改请求路径** + location / { + root /etc/nginx/html; + index index.html index.htm; + try_files $uri /index.html; + } -![image-20241026031651591](http://116.196.101.14:9000/docs/auth/undefinedimage-20241026031651591.png) + # 后端跨域请求 + location ~/admin/ { + proxy_pass http://172.17.0.1:8000; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } -### 部署命令 + error_page 404 404.html; + + location = /50x.html { + root html; + } + } + +server { + listen 80 ; + listen [::]:80; + server_name localhost; + return 301 https://$host$request_uri; + + location / { + root /etc/nginx/html; + index index.html index.htm; + try_files $uri /index.html; + } + + # 后端跨域请求 + location ~/admin/ { + proxy_pass http://172.17.0.1:8000; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + error_page 404 404.html; + + location = /50x.html { + root html; + } +} +``` + +#### 运行docker文件 + +![image-20241108151726981](http://116.196.101.14:9000/docs/auth/image-20241108151726981.png) + +![image-20241108151940158](http://116.196.101.14:9000/docs/auth/image-20241108151940158.png) + +> 命令预览 +> +> ```sh +> docker build -f Dockerfile -t bunny_auth_web:1.0.0 . && docker run -p 80:443 -p 443:443 --name bunny_auth_web --restart always bunny_auth_web:1.0.0 +> ``` + +## 后端部署 + +开发环境环境:对外暴露的端口是`7070` + +生产环境:对外暴露的端口是`8000` + +需要先打包,打包完成后会在目录下生成对应的`target`相关文件 ```bash -docker build -f Dockerfile -t bunny_auth_web:1.0.0 . && docker run -p 80:80 --name bunny_auth_web --restart always bunny_auth_web:1.0.0 +# 开发环境 +mvn clean package -Pprod -DskipTests + +# 测试环境 +mvn clean package -Ptest -DskipTests ``` + +![image-20241108153705104](http://116.196.101.14:9000/docs/auth/image-20241108153705104.png) + +这个文件夹是必须的 + +![image-20241108153750097](http://116.196.101.14:9000/docs/auth/image-20241108153750097.png) diff --git a/docker/Dockerfile b/docker/Dockerfile index 349fcba..ae2e543 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,10 +6,10 @@ RUN rm /etc/nginx/conf.d/default.conf # 将自定义的 Nginx 配置文件复制到容器中 COPY nginx.conf /etc/nginx/conf.d/default.conf -#COPY bunny-web.site.csr /etc/nginx/bunny-web.site.csr -#COPY bunny-web.site.key /etc/nginx/bunny-web.site.key -#COPY bunny-web.site_bundle.crt /etc/nginx/bunny-web.site_bundle.crt -#COPY bunny-web.site_bundle.pem /etc/nginx/bunny-web.site_bundle.pem +COPY bunny-web.site.csr /etc/nginx/bunny-web.site.csr +COPY bunny-web.site.key /etc/nginx/bunny-web.site.key +COPY bunny-web.site_bundle.crt /etc/nginx/bunny-web.site_bundle.crt +COPY bunny-web.site_bundle.pem /etc/nginx/bunny-web.site_bundle.pem # 设置时区,构建镜像时执行的命令 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime @@ -24,7 +24,7 @@ COPY dist/ /usr/share/nginx/html COPY dist/ /etc/nginx/html # 暴露 Nginx 的默认端口 -EXPOSE 80 +EXPOSE 443 # 自动启动 Nginx CMD ["nginx", "-g", "daemon off;"] diff --git a/docker/bunny-web.site.csr b/docker/bunny-web.site.csr new file mode 100644 index 0000000..8470be1 --- /dev/null +++ b/docker/bunny-web.site.csr @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIC/DCCAeQCAQAwgYoxCzAJBgNVBAYTAkNOMRAwDgYDVQQIEwdCZWlqaW5nMRAw +DgYDVQQHEwdCZWlqaW5nMQ8wDQYDVQQKEwZxY2xvdWQxDzANBgNVBAsTBnFjbG91 +ZDEXMBUGA1UEAxMOYnVubnktd2ViLnNpdGUxHDAaBgNVBAUTEzcwMjQ3NDk4NzQ4 +Mjg1OTA5MzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD1Ld0oD+qm +7JM6uEphC+HfNPhVA3IgCSEXxaNOe+WzrvVefopk7odWpjZMCRMm8kS3YUXJI3as +ff0NMJbmih7h7ESeQsd+JoPs+nIwFPovNYzjTfdw2Q0HQZ5zladbg4v7j1JWHQ4/ +7PpxhsD08KJ5hidGO6pq7WF+LDvm824teYhdGBCjqCBfsF7FSe0htVIFF6g1c4fC +s/HLW+PLz/Crkr58OQZHEhyeC+wmnB1H5QBZHh2peNvfSgCXs5CQutGVtewfIsAU +BLkHE6xFeYv1kWIguuycQ6FBFL+fRUAcXS9n8OXAwbIuTLeRLShtqBGQz4meSmC1 +UiJeedsKaawTAgMBAAGgLDAqBgkqhkiG9w0BCQ4xHTAbMBkGA1UdEQQSMBCCDmJ1 +bm55LXdlYi5zaXRlMA0GCSqGSIb3DQEBCwUAA4IBAQAEJRIgGVU0ij9TWdNFJ1y7 +YW67sGKH/zCjNfmwCWjvJ+zDDGxNpuwUiKj6jwDNL/ku99axIbJ3Rzn8HQ75N1M6 +IzNKTUtlEgYcj84khilGFOgS3Fr/BPpRLVjx0BdXHRO+sbKx5Gg2tqQwhVFqlJxM +MYXpSbzjs+RwFZhy30l6Zhpu6nfkj3tBZYE+gTiOQaKXyUNrGZAVdFzesEaOIVcv +oQFYFFU/HVsiizupS4tcL1GFko7fkNwXQ0Da3QEoA++JNC9RAi4iRfRjGxhnpk0N +LqGV9Y2ExFn5VBZNyab1TIGmr3xSeGz1BNLLyoquRbcmSOS0WPW8koawBe/P90bM +-----END CERTIFICATE REQUEST----- \ No newline at end of file diff --git a/docker/bunny-web.site.key b/docker/bunny-web.site.key new file mode 100644 index 0000000..e35f4c6 --- /dev/null +++ b/docker/bunny-web.site.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEA9S3dKA/qpuyTOrhKYQvh3zT4VQNyIAkhF8WjTnvls671Xn6K +ZO6HVqY2TAkTJvJEt2FFySN2rH39DTCW5ooe4exEnkLHfiaD7PpyMBT6LzWM4033 +cNkNB0Gec5WnW4OL+49SVh0OP+z6cYbA9PCieYYnRjuqau1hfiw75vNuLXmIXRgQ +o6ggX7BexUntIbVSBReoNXOHwrPxy1vjy8/wq5K+fDkGRxIcngvsJpwdR+UAWR4d +qXjb30oAl7OQkLrRlbXsHyLAFAS5BxOsRXmL9ZFiILrsnEOhQRS/n0VAHF0vZ/Dl +wMGyLky3kS0obagRkM+JnkpgtVIiXnnbCmmsEwIDAQABAoIBAGvG2oYG4Sa5rkrM +wl2AxKzC8zsjxaJRgQubJJuWmTXwfgoo5BtUQ4gSjqHEB3hCXXSjPPMbNMrEo12N +83eqVcMIgm1ze5B3y9x7h4CdaBEioCk3l8MylqiO7uFucuAmpn1R1mbmZOIzATCw +hNfng/SZxV/5UIOqkAXP2hE/BzrTapvzmYrKAYLqqLAfkuII5m16FgjbGuG4Dnch +l+voT93fCK0fZkwz70oNYSos1F73XourXXfauuWCBy9kbmizfHU3klqkATZqPt1W +cYSIaamZOWQ3PE66oRPDnGixTdw+IxPrr0htwXN7XKZVKgKzirBfDnI5HplUzPKL +bowZmRECgYEA+dmAjXNPJeIJBgVTIeGZ3Td9jnZq+EeD5LGGfJ2bncZ3ExCNsiV/ +djMSj0KFZlkc7GNydSaig0GMoLJzr3vOpYi4/areWNZ5Ar4BkH/1S/0u9v+kYox4 +5vp1JJ6jRSw60A2YH5LI7Wzs8r7S/rIWo0RT/WFvj2gXqKiEfbwCLWkCgYEA+zbt +88Ex+YOY1I2YYQL0eAH2l3DX4nqjJr6btsTZO/nd7tRI5v7VwOzdhU8YaC+Sj64+ +qPQUg/79cjlMO5FdVdX7k2Dms1ZcT6C9BnZ+NugEaZH9Sgmd2sBJNpGl0rAeZcSn +R/gYTC13Z5vtKbUMtpsXZydKwey4wOT0J7fhkhsCgYAHcBkqnNcrWopIOppZ9Nxe +wIslVZMjpwVfJoXJaeu7C7B5ydFeD023GBgiWamc/WQmCWPb5vWJkMb99bIJ9FaX +iPVw38hUvrXFhiCHy7ditrvSMJQVNvdWcPhRycM0iPeLQAxaTEVdBBQdud6QJH8W +By+06FSo4UFrDPE8yP8LmQKBgBKdJ1SAZCuQzKozM688gNDDlHn0Korle2FLjk4k +l9QR15fystQq3bvF0UQncC+IFtv+lTX/n+WH50+nXzaqtre9ez6YV3/CTmS4DEmG +TiPTXUBVSOdLfx7OUJ5yfE74Lchsodh7UZGTbN2IeDI28BI3u6wxBSEJYUcpr82h +ml0xAoGBALHmuJxcaawZn2KC467Z8xP6+ggxzjsnnk+GlfqeqSmlaSVBo0Di8Nz2 +ekHHzRSIL+YZ3dsfrgR4IVigrlYETHGZl4BAtU2Yi0+1T1qhgTFkPlATuB5uHBhf +dyULEujSQy+yeoS+RR+69XUswhhrNUgij9rKHDDjMHbdnKO0fSgs +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/docker/bunny-web.site_bundle.crt b/docker/bunny-web.site_bundle.crt new file mode 100644 index 0000000..2ad85d6 --- /dev/null +++ b/docker/bunny-web.site_bundle.crt @@ -0,0 +1,64 @@ +-----BEGIN CERTIFICATE----- +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 +QT4W0Lc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFBzCCA++gAwIBAgIRALIM7VUuMaC/NDp1KHQ76aswDQYJKoZIhvcNAQELBQAw +ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yMjAxMTAwMDAwMDBaFw0y +ODEyMzEyMzU5NTlaMFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEg +VGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIERWIFRM +UyBDQSBHMjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjGDe0GSaBs +Yl/VhMaTM6GhfR1TAt4mrhN8zfAMwEfLZth+N2ie5ULbW8YvSGzhqkDhGgSBlafm +qq05oeESrIJQyz24j7icGeGyIZ/jIChOOvjt4M8EVi3O0Se7E6RAgVYcX+QWVp5c +Sy+l7XrrtL/pDDL9Bngnq/DVfjCzm5ZYUb1PpyvYTP7trsV+yYOCNmmwQvB4yVjf +IIpHC1OcsPBntMUGeH1Eja4D+qJYhGOxX9kpa+2wTCW06L8T6OhkpJWYn5JYiht5 +8exjAR7b8Zi3DeG9oZO5o6Qvhl3f8uGU8lK1j9jCUN/18mI/5vZJ76i+hsgdlfZB +Rh5lmAQjD80M9TY+oD4MYUqB5XrigPfFAUwXFGehhlwCVw7y6+5kpbq/NpvM5Ba8 +SeQYUUuMA8RXpTtGlrrTPqJryfa55hTuX/ThhX4gcCVkbyujo0CYr+Uuc14IOyNY +1fD0/qORbllbgV41wiy/2ZUWZQUodqHWkjT1CwIMbQOY5jmrSYGBwwIDAQABo4IB +JjCCASIwHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYE +FF86fBEQfgxncWHci6O1AANn9VccMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E +CDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAE +GzAZMA0GCysGAQQBsjEBAgIxMAgGBmeBDAECATBDBgNVHR8EPDA6MDigNqA0hjJo +dHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNy +bDA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k +b2NhLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAHMUom5cxIje2IiFU7mOCsBr2F6CY +eU5cyfQ/Aep9kAXYUDuWsaT85721JxeXFYkf4D/cgNd9+hxT8ZeDOJrn+ysqR7NO +2K9AdqTdIY2uZPKmvgHOkvH2gQD6jc05eSPOwdY/10IPvmpgUKaGOa/tyygL8Og4 +3tYyoHipMMnS4OiYKakDJny0XVuchIP7ZMKiP07Q3FIuSS4omzR77kmc75/6Q9dP +v4wa90UCOn1j6r7WhMmX3eT3Gsdj3WMe9bYD0AFuqa6MDyjIeXq08mVGraXiw73s +Zale8OMckn/BU3O/3aFNLHLfET2H2hT6Wb3nwxjpLIfXmSVcVd8A58XH0g== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/docker/bunny-web.site_bundle.pem b/docker/bunny-web.site_bundle.pem new file mode 100644 index 0000000..2ad85d6 --- /dev/null +++ b/docker/bunny-web.site_bundle.pem @@ -0,0 +1,64 @@ +-----BEGIN CERTIFICATE----- +MIIGATCCBGmgAwIBAgIRAKXYLO/SShdHHLQzqfAZhg8wDQYJKoZIhvcNAQEMBQAw +WTELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs +IEluYy4xIzAhBgNVBAMTGlRydXN0QXNpYSBSU0EgRFYgVExTIENBIEcyMB4XDTI0 +MTAyNzAwMDAwMFoXDTI1MDEyNTIzNTk1OVowGTEXMBUGA1UEAxMOYnVubnktd2Vi +LnNpdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD1Ld0oD+qm7JM6 +uEphC+HfNPhVA3IgCSEXxaNOe+WzrvVefopk7odWpjZMCRMm8kS3YUXJI3asff0N +MJbmih7h7ESeQsd+JoPs+nIwFPovNYzjTfdw2Q0HQZ5zladbg4v7j1JWHQ4/7Ppx +hsD08KJ5hidGO6pq7WF+LDvm824teYhdGBCjqCBfsF7FSe0htVIFF6g1c4fCs/HL +W+PLz/Crkr58OQZHEhyeC+wmnB1H5QBZHh2peNvfSgCXs5CQutGVtewfIsAUBLkH +E6xFeYv1kWIguuycQ6FBFL+fRUAcXS9n8OXAwbIuTLeRLShtqBGQz4meSmC1UiJe +edsKaawTAgMBAAGjggKCMIICfjAfBgNVHSMEGDAWgBRfOnwREH4MZ3Fh3IujtQAD +Z/VXHDAdBgNVHQ4EFgQUCgjajlwGuQbtnrCXu0IxdlZaNQEwDgYDVR0PAQH/BAQD +AgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC +MEkGA1UdIARCMEAwNAYLKwYBBAGyMQECAjEwJTAjBggrBgEFBQcCARYXaHR0cHM6 +Ly9zZWN0aWdvLmNvbS9DUFMwCAYGZ4EMAQIBMH0GCCsGAQUFBwEBBHEwbzBCBggr +BgEFBQcwAoY2aHR0cDovL2NydC50cnVzdC1wcm92aWRlci5jbi9UcnVzdEFzaWFS +U0FEVlRMU0NBRzIuY3J0MCkGCCsGAQUFBzABhh1odHRwOi8vb2NzcC50cnVzdC1w +cm92aWRlci5jbjCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB3AM8RVu7VLnyv84db +2Wkum+kacWdKsBfsrAHSW3fOzDsIAAABks2UPdMAAAQDAEgwRgIhAI6yKkfwoLeL +8zqUYFnsppj17PQ5KKYIB/lXZClus0/6AiEAz3Wf+QLNn+lKA3BEILDh9dUwefQ8 +O1JbGRC/46RD+X8AdQDM+w9qhXEJZf6Vm1PO6bJ8IumFXA2XjbapflTA/kwNsAAA +AZLNlD3TAAAEAwBGMEQCICRAqVIs7vatspQOfluag7IKgW0La529yprRlfSNmooy +AiBJjcjZaVq3hbpC19kwRWRj1gTV3w9wv8qUvEnmXEslLTAtBgNVHREEJjAkgg5i +dW5ueS13ZWIuc2l0ZYISd3d3LmJ1bm55LXdlYi5zaXRlMA0GCSqGSIb3DQEBDAUA +A4IBgQCShkTnx5DBoQPgBcxbmBCX7n0hrWNjdJ1/sJW0wzOAy/NfZu1S4n46Foi4 +wzHraKsa3xH029e8BcVsUMXljB1TAcVerPVrrum2Kc8ZigrYRjgjyrnjbMj8i5rv +T/lagYjMQ8/ox4eTiUQ7FlsPoyByd6G8g0xZQQbL47Wq9itmQ2Rjmv9euEumjr1t +YZZv9saTuepqNxa+GoOg4A2EPlx1k6MVApztD6dzRB7hKUm2CLfvi/0pCvrhZPX3 +U1PVktEK77TXoFlUTdkWghmGbOIUo10njmoPJjVNzrJaWO5s3ylIEIltOSDgvEcu +qfvyyn43fslNhq6aMadWxNj6HHsWy6xYeEMCkLUOcK0gr78TIImj6kS8AgsuGMAL +9E9iB8q3DiZKYLAuVWqqdFG7qe/bRC38/XbscaDKUH6dShdmD/qY2fyb5ZKg+QA7 +fBaJtd+25eGX+sBZh5xZI/09+p3yY72skcwcjGVOggsy9pQKqzcXAh/tIoVq2Xrc +QT4W0Lc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFBzCCA++gAwIBAgIRALIM7VUuMaC/NDp1KHQ76aswDQYJKoZIhvcNAQELBQAw +ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yMjAxMTAwMDAwMDBaFw0y +ODEyMzEyMzU5NTlaMFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEg +VGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIERWIFRM +UyBDQSBHMjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjGDe0GSaBs +Yl/VhMaTM6GhfR1TAt4mrhN8zfAMwEfLZth+N2ie5ULbW8YvSGzhqkDhGgSBlafm +qq05oeESrIJQyz24j7icGeGyIZ/jIChOOvjt4M8EVi3O0Se7E6RAgVYcX+QWVp5c +Sy+l7XrrtL/pDDL9Bngnq/DVfjCzm5ZYUb1PpyvYTP7trsV+yYOCNmmwQvB4yVjf +IIpHC1OcsPBntMUGeH1Eja4D+qJYhGOxX9kpa+2wTCW06L8T6OhkpJWYn5JYiht5 +8exjAR7b8Zi3DeG9oZO5o6Qvhl3f8uGU8lK1j9jCUN/18mI/5vZJ76i+hsgdlfZB +Rh5lmAQjD80M9TY+oD4MYUqB5XrigPfFAUwXFGehhlwCVw7y6+5kpbq/NpvM5Ba8 +SeQYUUuMA8RXpTtGlrrTPqJryfa55hTuX/ThhX4gcCVkbyujo0CYr+Uuc14IOyNY +1fD0/qORbllbgV41wiy/2ZUWZQUodqHWkjT1CwIMbQOY5jmrSYGBwwIDAQABo4IB +JjCCASIwHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYE +FF86fBEQfgxncWHci6O1AANn9VccMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E +CDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAE +GzAZMA0GCysGAQQBsjEBAgIxMAgGBmeBDAECATBDBgNVHR8EPDA6MDigNqA0hjJo +dHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNy +bDA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k +b2NhLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAHMUom5cxIje2IiFU7mOCsBr2F6CY +eU5cyfQ/Aep9kAXYUDuWsaT85721JxeXFYkf4D/cgNd9+hxT8ZeDOJrn+ysqR7NO +2K9AdqTdIY2uZPKmvgHOkvH2gQD6jc05eSPOwdY/10IPvmpgUKaGOa/tyygL8Og4 +3tYyoHipMMnS4OiYKakDJny0XVuchIP7ZMKiP07Q3FIuSS4omzR77kmc75/6Q9dP +v4wa90UCOn1j6r7WhMmX3eT3Gsdj3WMe9bYD0AFuqa6MDyjIeXq08mVGraXiw73s +Zale8OMckn/BU3O/3aFNLHLfET2H2hT6Wb3nwxjpLIfXmSVcVd8A58XH0g== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/docker/nginx.conf b/docker/nginx.conf index fca77a4..4be834d 100644 --- a/docker/nginx.conf +++ b/docker/nginx.conf @@ -3,10 +3,58 @@ map $http_upgrade $connection_upgrade { '' close; } +server { + #SSL 默认访问端口号为 443 + listen 443 ssl; + #请填写绑定证书的域名 + server_name localhost; + #请填写证书文件的相对路径或绝对路径 + ssl_certificate bunny-web.site_bundle.crt; + #请填写私钥文件的相对路径或绝对路径 + ssl_certificate_key bunny-web.site.key; + ssl_session_timeout 5m; + #请按照以下协议配置 + ssl_protocols TLSv1.2 TLSv1.3; + #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。 + ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; + ssl_prefer_server_ciphers on; + + location / { + root /etc/nginx/html; + index index.html index.htm; + try_files $uri /index.html; + } + + # 后端跨域请求 + location ~/admin/ { + proxy_pass http://172.17.0.1:8000; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + # 后端跨域请求 + location ~/api/v1/ { + proxy_pass http://129.211.31.58:3000; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + error_page 404 404.html; + + location = /50x.html { + root html; + } + } + server { listen 80 ; listen [::]:80; server_name localhost; + return 301 https://$host$request_uri; location / { root /etc/nginx/html; diff --git a/index.html b/index.html index c6f9a51..80f6e51 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,12 @@ + + bunny-admin diff --git a/src/views/welcome/components/server-read-me.vue b/src/views/welcome/components/server-read-me.vue index bda03ea..dbd57c6 100644 --- a/src/views/welcome/components/server-read-me.vue +++ b/src/views/welcome/components/server-read-me.vue @@ -8,7 +8,7 @@ const content = ref(); /** 获取文档信息 */ const onSearch = async () => { - const response = await fetch('http://129.211.31.58:3000/api/v1/repos/auth/auth-server-java/contents/ReadMe.md'); + const response = await fetch('/api/v1/repos/auth/auth-server-java/contents/ReadMe.md'); const json = await response.json(); content.value = decode(json.content); }; diff --git a/src/views/welcome/components/web-read-me.vue b/src/views/welcome/components/web-read-me.vue index 3bf6655..5963d62 100644 --- a/src/views/welcome/components/web-read-me.vue +++ b/src/views/welcome/components/web-read-me.vue @@ -8,7 +8,7 @@ const content = ref(); /** 获取文档信息 */ const onSearch = async () => { - const response = await fetch('http://129.211.31.58:3000/api/v1/repos/auth/auth-web/contents/ReadMe.md'); + const response = await fetch('/api/v1/repos/auth/auth-web/contents/ReadMe.md'); const json = await response.json(); content.value = decode(json.content); }; diff --git a/src/views/welcome/utils/hooks.ts b/src/views/welcome/utils/hooks.ts index be703eb..9aff996 100644 --- a/src/views/welcome/utils/hooks.ts +++ b/src/views/welcome/utils/hooks.ts @@ -8,7 +8,7 @@ export const serverCommitList = ref([]); /** 获取web代码提交记录 */ export const getWebCommitList = async () => { - const response = await fetch('http://129.211.31.58:3000/api/v1/repos/auth/auth-web/commits?page=1&limit=20'); + const response = await fetch('/api/v1/repos/auth/auth-web/commits?page=1&limit=20'); const json = await response.json(); webCommitList.value = json.map(item => ({ date: dayjs(item?.commit?.committer?.date).format('YYYY-MM-DD HH:mm:ss'), @@ -21,7 +21,7 @@ export const getWebCommitList = async () => { }; /** 获取后端代码提交记录 */ export const getServerCommitList = async () => { - const response = await fetch('http://129.211.31.58:3000/api/v1/repos/auth/auth-server-java/commits?page=1&limit=20'); + const response = await fetch('/api/v1/repos/auth/auth-server-java/commits?page=1&limit=20'); const json = await response.json(); serverCommitList.value = json.map(item => ({ date: dayjs(item?.commit?.committer?.date).format('YYYY-MM-DD HH:mm:ss'),