AI智能摘要
摸鱼岛是一个开源的信息聚合站点,前端基于React + Antd开发,后端采用爬虫结合Netty、SpringBoot、Redis和MySQL技术栈。项目支持多数据源聚合、每日待办、摸鱼阅读、在线工具箱及音乐播放器等功能。提供完整的部署方案,包括Docker镜像构建、Nginx反向代理配置及前后端分离部署流程,便于本地搭建与扩展。
— 此摘要由AI分析文章内容生成,仅供参考。
项目前端地址:lhccong/fish-island-frontend: 摸鱼岛🎣前端基于 React + Antd 开发的开源
项目后端地址:lhccong/fish-island-backend: 摸鱼岛🎣后端 基于爬虫 ➕ Netty ➕ SpringBoot ➕Redis➕ MySQL 开源
项目介绍
一个聚合每日热点信息、待办工作和小游戏的开源摸鱼站点
功能特性
1.支持多种数据源聚合;
2.每日待办功能;
3.摸鱼阅读;
4.在线工具箱;
5.音乐播放器等
截图预览
安装部署
前端
- 修改 src/constants/index.ts 的接口地址。
- max build –打包命令。
- 部署 dist 文件。
后端
- 执行初始化 SQL create_table.sql
- 更改 MySQL 地址、Redis 地址、Minio 地址、邮箱发送配置
- Maven 打包
- docker 部署
- dockerfile 文件
FROM openjdk:8
ENV workdir=/cong/fish
COPY . ${workdir}
WORKDIR ${workdir}
EXPOSE 8123
CMD ["java","-jar","-Duser.timezone=GMT+08","fish-island-backend-0.0.1-SNAPSHOT.jar"]
打包命令
docker build -f ./dockerfile -t fish . 启动命令:docker run -d -e TZ=CST -p 8123:8123 -p 8090:8090 --name "fish" fish:latest
nginx 配置
server {
listen 80;
listen [::]:80;
server_name moyuapi.codebug.icu;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
server_name moyuapi.codebug.icu;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/fish;
index index.html;
try_files $uri $uri/ /index.html;
}
location /fish/ {
proxy_pass http://fish:8123/;
}
# WebSocket代理配置,处理 wss:// 请求
location /ws/ {
proxy_pass http://fish:8090/; # 后端 WebSocket 服务地址
proxy_http_version 1.1; # 使用 HTTP/1.1 协议,WebSocket 需要这个版本
proxy_set_header Upgrade $http_upgrade; # 必须设置这些头来支持 WebSocket 协议的升级
proxy_set_header Connection 'upgrade'; # 维持 WebSocket 连接
proxy_set_header Host $host; # 确保 Host 头部传递正确
proxy_cache_bypass $http_upgrade; # 禁用缓存
}
location /sogou-api/ {
proxy_pass https://pic.sogou.com/;
proxy_set_header Host pic.sogou.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_server_name on;
# 解决 CORS 问题
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
add_header Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range";
add_header Access-Control-Expose-Headers "Content-Length,Content-Range";
# 处理 OPTIONS 预检请求
if ($request_method = OPTIONS) {
return 204;
}
}
location /holiday/ {
proxy_pass https://date.appworlds.cn/;
# 保持目标 API 的 Host,避免返回默认网页
proxy_set_header Host date.appworlds.cn;
# 伪装成浏览器,防止服务器根据 User-Agent 返回 HTML
proxy_set_header User-Agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";
# 强制服务器返回 JSON,而不是 HTML
proxy_set_header Accept "application/json";
# CORS 允许跨域
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
add_header Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range";
add_header Access-Control-Expose-Headers "Content-Length,Content-Range";
# 处理 OPTIONS 预检请求
if ($request_method = OPTIONS) {
return 204;
}
}
location /img-api/ {
proxy_pass https://i.111666.best/;
proxy_set_header Host pic.sogou.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_server_name on;
# 解决 CORS 问题
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
add_header Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range";
add_header Access-Control-Expose-Headers "Content-Length,Content-Range";
# 处理 OPTIONS 预检请求
if ($request_method = OPTIONS) {
return 204;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
发布者:木木,转载请注明出处:https://blog.huzz.cn/9788.html

微信
支付宝