flnxi-Wu/scripts/tools/setup-nginx-centos.sh
WuYongJie f646b71813
Some checks failed
CI Check / check (push) Has been cancelled
chore: 初始化本地仓库并同步最近改动
2025-11-18 17:50:16 +08:00

185 lines
4.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 3D素材系统 - Nginx 域名配置脚本 (CentOS 7)
# 域名: 3D.YYDD.AI
# 后端服务: http://localhost:2320
echo "=========================================="
echo " 配置 Nginx 反向代理 (CentOS 7)"
echo " 域名: 3D.YYDD.AI"
echo "=========================================="
# 1. 安装 Nginx
echo "1. 检查并安装 Nginx..."
if ! command -v nginx &> /dev/null; then
echo "安装 Nginx..."
yum install -y epel-release
yum install -y nginx
else
echo "Nginx 已安装: $(nginx -v 2>&1)"
fi
# 2. 创建配置目录(如果不存在)
mkdir -p /etc/nginx/conf.d
# 3. 创建 Nginx 配置文件
echo ""
echo "2. 创建 Nginx 配置..."
cat > /etc/nginx/conf.d/3d-yydd-ai.conf << 'EOF'
# 3D 素材系统 - Nginx 配置
# 域名: 3D.YYDD.AI 和 3d.yydd.ai
server {
listen 80;
listen [::]:80;
server_name 3d.yydd.ai 3D.YYDD.AI www.3d.yydd.ai;
# 日志文件
access_log /var/log/nginx/3d-yydd-access.log;
error_log /var/log/nginx/3d-yydd-error.log;
# 客户端请求体大小限制(设置为 0 表示不限制)
client_max_body_size 0;
# 超时设置(支持大文件上传,3小时)
client_body_timeout 10800s;
client_header_timeout 10800s;
send_timeout 10800s;
proxy_connect_timeout 10800s;
proxy_send_timeout 10800s;
proxy_read_timeout 10800s;
# 缓冲区设置
client_body_buffer_size 128k;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
location / {
# 反向代理到本地 2320 端口(FRP 穿透后的 NAS 服务)
proxy_pass http://localhost:2320;
# 代理头设置
proxy_set_header Host $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;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 禁用缓冲以支持大文件上传
proxy_request_buffering off;
proxy_buffering off;
}
# API 路由特殊处理(确保上传不受限制)
location /api/ {
proxy_pass http://localhost:2320;
# 代理头设置
proxy_set_header Host $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;
# 特别针对上传的设置
proxy_request_buffering off;
proxy_buffering off;
client_max_body_size 0;
# 增加超时时间(3小时)
proxy_connect_timeout 10800s;
proxy_send_timeout 10800s;
proxy_read_timeout 10800s;
}
}
EOF
echo "✅ Nginx 配置文件已创建: /etc/nginx/conf.d/3d-yydd-ai.conf"
# 4. 配置 SELinux(允许 Nginx 网络连接)
echo ""
echo "3. 配置 SELinux..."
if command -v setsebool &> /dev/null; then
setsebool -P httpd_can_network_connect 1
echo "✅ SELinux 配置完成"
else
echo "⚠️ SELinux 工具未找到,跳过"
fi
# 5. 配置防火墙
echo ""
echo "4. 配置防火墙..."
if command -v firewall-cmd &> /dev/null; then
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
echo "✅ 防火墙配置完成"
else
echo "⚠️ firewalld 未运行,跳过"
fi
# 6. 测试 Nginx 配置
echo ""
echo "5. 测试 Nginx 配置..."
if nginx -t; then
echo "✅ Nginx 配置测试通过"
else
echo "❌ Nginx 配置测试失败"
exit 1
fi
# 7. 启动 Nginx
echo ""
echo "6. 启动 Nginx..."
systemctl enable nginx
systemctl restart nginx
sleep 2
if systemctl is-active --quiet nginx; then
echo "✅ Nginx 已成功启动"
else
echo "❌ Nginx 启动失败"
systemctl status nginx
exit 1
fi
# 8. 测试代理
echo ""
echo "7. 测试反向代理..."
if curl -s -o /dev/null -w "%{http_code}" http://localhost:80 | grep -q "307\|200\|301"; then
echo "✅ 反向代理工作正常"
else
echo "⚠️ 反向代理可能有问题,请检查后端服务"
fi
echo ""
echo "=========================================="
echo " ✅ 配置完成!"
echo "=========================================="
echo ""
echo "📋 配置信息:"
echo " 域名: 3D.YYDD.AI"
echo " 后端: http://localhost:2320"
echo " 上传限制: 无限制"
echo " 超时时间: 10800秒(3小时)"
echo ""
echo "🌐 访问地址:"
echo " http://3d.yydd.ai"
echo " http://3D.YYDD.AI"
echo ""
echo "📝 下一步:"
echo " 1. 确保域名 3D.YYDD.AI 已解析到 180.97.221.140"
echo " 2. 测试访问: curl -I http://3d.yydd.ai"
echo " 3. 如需 HTTPS,请安装 certbot:"
echo " yum install -y certbot python2-certbot-nginx"
echo " certbot --nginx -d 3d.yydd.ai -d www.3d.yydd.ai"
echo ""
echo "✅ 完成!"