# install.sh 更新说明 - 验证码Cookie配置 ## 需要修改的原因 验证码功能依赖Cookie传递session信息。install.sh生成的Nginx配置中缺少Cookie传递设置,导致验证码无法正常工作。 ## 需要修改的位置 install.sh文件中有**3处**`location /api`配置需要添加Cookie传递设置。 ### 位置1:第2372-2387行(HTTP配置) 在 `configure_nginx_http_first()` 函数中: ```nginx location /api { proxy_pass http://localhost:${BACKEND_PORT}; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; 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; # ⬇️ 在这里添加以下3行 ⬇️ # Cookie传递配置(验证码session需要) proxy_set_header Cookie $http_cookie; proxy_pass_header Set-Cookie; # 上传超时设置 proxy_read_timeout 3600s; proxy_send_timeout 3600s; proxy_connect_timeout 300s; } ``` ### 位置2:第2650行附近(HTTPS配置) 在 `configure_nginx_final()` 函数的HTTPS配置中: ```nginx location /api { proxy_pass http://localhost:${BACKEND_PORT}; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; 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; # ⬇️ 在这里添加以下3行 ⬇️ # Cookie传递配置(验证码session需要) proxy_set_header Cookie $http_cookie; proxy_pass_header Set-Cookie; # 上传超时设置 proxy_read_timeout 3600s; proxy_send_timeout 3600s; proxy_connect_timeout 300s; } ``` ### 位置3:第2783行附近(虚拟主机配置) 在另一个Nginx配置块中: ```nginx location /api { proxy_pass http://localhost:${BACKEND_PORT}; # ... 其他配置 ... proxy_set_header X-Forwarded-Proto $scheme; # ⬇️ 在这里添加以下3行 ⬇️ # Cookie传递配置(验证码session需要) proxy_set_header Cookie $http_cookie; proxy_pass_header Set-Cookie; # 上传超时设置 # ... } ``` ## 手动修改方法 ### 方法1:使用vim编辑器 ```bash vim install.sh # 在vim中: # 1. 按 / 搜索:location /api # 2. 找到 proxy_set_header X-Forwarded-Proto $scheme; 这一行 # 3. 在其后添加3行Cookie配置 # 4. 按 n 继续查找下一个,重复步骤2-3 # 5. 共修改3处 # 6. :wq 保存退出 ``` ### 方法2:使用sed批量替换 ```bash cd /home/yuyx/aaaaaa/网盘/vue-driven-cloud-storage # 备份 cp install.sh install.sh.backup # 批量替换(在所有location /api块中的X-Forwarded-Proto后添加) # 注意:这个命令需要仔细测试 sed -i '/proxy_set_header X-Forwarded-Proto \\$scheme;/a\ \ # Cookie传递配置(验证码session需要)\ proxy_set_header Cookie $http_cookie;\ proxy_pass_header Set-Cookie;' install.sh # 验证修改 grep -A 2 "Cookie传递配置" install.sh ``` ### 方法3:手动复制粘贴 1. 打开install.sh 2. 搜索 `location /api`(会找到3处) 3. 在每处的 `proxy_set_header X-Forwarded-Proto $scheme;` 后面添加: ``` # Cookie传递配置(验证码session需要) proxy_set_header Cookie $http_cookie; proxy_pass_header Set-Cookie; ``` ## 验证修改 ```bash # 检查是否修改了3处 grep -c "Cookie传递配置" install.sh # 输出应该是: 3 # 查看修改的位置 grep -n "Cookie传递配置" install.sh ``` ## 应用修改 ### 新部署时 直接运行修改后的install.sh即可,它会生成包含Cookie配置的Nginx配置文件。 ### 已部署的服务 需要手动更新Nginx配置文件: ```bash # 编辑Nginx配置 vim /etc/nginx/sites-available/玩玩云.conf # 或 vim /etc/nginx/conf.d/玩玩云.conf # 在location /api块中添加Cookie配置 # 测试配置 nginx -t # 重新加载 nginx -s reload ``` ## 为什么需要这个配置 1. **proxy_set_header Cookie $http_cookie;** - 将浏览器发送的Cookie转发给后端 - 后端才能读取验证码session 2. **proxy_pass_header Set-Cookie;** - 将后端的Set-Cookie响应头传递给浏览器 - 浏览器才能保存验证码session cookie 3. **缺少这两行会导致**: - 验证码session无法建立 - 验证码一直提示"已过期" - Cookie在Nginx层被过滤掉 ## 相关提交 - nginx/nginx.conf 已经修改(提交 5f3fd38) - install.sh 需要同步更新(本文档) ## 注意事项 - 修改install.sh后,需要提交到Git - 已部署的服务需要手动更新Nginx配置 - 修改后记得测试验证码功能