- 每个模块独立部署:每个模块可以作为独立的服务,拥有自己的代码库和技术栈(语言、框架、数据库等)。这些服务可以部署在不同的服务器或容器上,并绑定不同的子域名。
- 反向代理(如Nginx)管理子域名:使用Nginx或类似的反向代理来路由不同的子域名。例如,
module1.example.com
路由到后端用 Node.js 开发的服务,module2.example.com
路由到用 Python 或 Ruby 开发的服务。 - API Gateway:通过 API 网关来集中管理各个模块的通信和路由。API 网关可以统一处理身份验证、权限控制等。
为了实现不同模块之间的用户登录和注册信息共享,单点登录(SSO)是比较合适的方案。SSO 允许用户在多个不同的服务之间只需登录一次,并能够在这些服务中共享身份验证状态。
- JWT(JSON Web Token):可以使用 JWT 在不同模块间传递用户的身份验证信息。用户登录后生成 JWT,JWT 可以存储在浏览器的 Cookie 或 LocalStorage 中,然后每个模块(服务)通过 JWT 来验证用户身份。
现有模块认证和博客已经使用后端语言rust,后端框架axum,前端框架nextjs完成,数据库使用mysql
-
前端:可以使用 React、Vue.js 或 Angular 进行开发,负责调用后端 API 并进行页面渲染。
-
后端
:不同的模块可以用适合的语言和框架开发。例如:
- Python(Django、Flask)
- Node.js(Express、NestJS)
- Ruby(Rails)
- Go、Rust 等语言
-
数据库:
-
用户管理模块:搭建一个中心化的用户认证服务,使用 OAuth 2.0 或 JWT 进行用户登录和注册。
-
模块开发:
auth.szpu.online
:负责用户的登录和注册逻辑,使用axum+ssr。blog.szpu.online
:一个博客模块,使用axum+nextjs。
-
反向代理配置:在 Nginx 配置文件中为每个子域名添加路由规则,将请求转发到不同的后端服务。
-
单点登录集成:每个子域名模块调用 SSO 服务进行登录验证,使用 JWT 来管理用户的身份验证。