记录一次全栈经验,所有遇到的坑。(文中无需梯子,免费使用chatGPT方法喔)

记录,一次,经验,所有,遇到,文中,无需,梯子,免费,使用,chatgpt,方法 · 浏览次数 : 25

小编点评

**1. 网站介绍** * **1.1 网站地址:chatGPT1.2** * **1.3 网站亮点:** * 访问方便,无需注册账号和梯子 * 聊天记录持久化,可分享至多设备 * 账号后台管理,可设置提问次数限制 **2. 技术栈** * **2.1 前端:VUE3+TS后台管理页面:Vue2+JS** * **2.2 后端:MongoDB+nodeJs,使用express轻量级框架** * **2.3运维:Docker + nginx** **3. 遇到的坑** * **3.1 nginx反向代理问题:** * 在线上返回问题答案时,发现在线上前端返回的答案没有打字机效果,而本地确有打字机效果 * 原因是,本地使用vite开了反代理 *解决方案:添加 `proxy_buffering off;` 选项于 `nginx.conf` 中 * **3.2 配置 SSL 证书:** * 腾讯云申请域名且将域名备案 * 腾讯云申请免费的 SSL证书,将证书在前端服务和后端服务分别添加 * 配置 SSL 证书文件路径和证书密码 * **3.3 跨域问题:** * 使用 `proxy_pass` 将请求转发到 `www.hangyejingling.cn:3002` * `app.js` 中修改 `options` 对象的 `cert` 和 `key` 属性 **4. 其他补充** * 代码示例中包含对 SSL 证书部署的详细说明,但由于缺少代码示例,此处不做展开。

正文

1、先推荐一下自己搭的网站

1.1 网站地址:chatGPT

1.2 建站原因

为了方便大家在国内使用chatGPT,所以我调研了一下。在国内用腾讯云使用代理访问,gpt3.5API。最后模仿了openAI的官方网站搭了一个国内可以使用的网站。方便不会注册账号和梯子的人使用。

1.3网站亮点

  • 聊天记录做了持久化,同账号可在多设备共享聊天记录
  • 一人一号,通过短信注册方式,防止一个人无限制注册多个账号。
  • 账号后台管理,有独立的账号后台管理系统。可以精确的从后台给每个用户添加或减少提问次数,对不文明提问的用户直接封禁。自由设置管理员用户与普通用户。

2、技术栈

2.1、前端

主页面:VUE3+TS
后台管理页面:VUE2+JS,基于vue-admin-template二次开发的。

2.2、后端

MongoDB+nodeJs,使用express轻量级框架进行开发。

2.3、运维

Docker + nginx。使用Docker部署自己的项目,简单易懂。且没有各种环境问题。非常好用。

3遇到的坑

3.1 nginx

在设计chatGPT返回问题答案时,发现在线上前端返回的答案没有打字机效果,而本地确有打字机效果。
后来发现原因是,本地使用vite开了反代理。而线上经过 Nginx 反向代理,开启了 buffer,则 Nginx 会尝试从后端缓冲一定大小的数据再发送给浏览器。
解决方案:
1、尝试在反代参数后添加 proxy_buffering off;,然后重载 Nginx。其他 web server 配置同理。
2、服务端直接解决跨域问题。不通过nginx反代理解决跨域(我使用的就是这种办法)

3.2 配置ssl证书

这一步全靠chatGpt一步一步的帮我实现。我的流程如下:
1、腾讯云申请域名且将域名备案
2、腾讯云申请免费的ssl证书,将ssl证书在前端服务和后端服务分别添加。
前端nginx中配置文件如下修改,ssl证书文件夹在同级目录:

	gzip_static on; #静态压缩
	server {
					listen       443 ssl;
					  #请填写绑定证书的域名
     				server_name hangyejingling.cn;  #项目域名; 
    					 #请填写证书文件的相对路径或绝对路径
   					ssl_certificate 	/etc/nginx/ssl/hangyejingling.cn_bundle.crt; 
    					 #请填写私钥文件的相对路径或绝对路径
   					ssl_certificate_key /etc/nginx/ssl/hangyejingling.cn.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;


					
					root /data/nginx/html;

					#access_log  logs/host.access.log  main;

					location / {
							root /data/nginx/html/dist;  #vue项目打包后的dist
							try_files $uri $uri/ /index.html; # 配置使用路由
							index  index.html index.htm;


					}




					location ~* \.(gif|jpg|jpeg|png|css|js|ico|css|eot|svg|ttf|woff|mov)$ {
							root /data/nginx/html/dist;
							expires   48h;
							access_log on;
					 }


					#error_page  404              /404.html;

					# redirect server error pages to the static page /50x.html
					#
					error_page   500 502 503 504  /50x.html;
					location = /50x.html {
							root   /data/nginx/html;
					}

	#        location /api { # 要配置的反向代理
	#             include uwsgi_params;
	#             proxy_set_header   Host             $host;
	#             proxy_set_header   x-forwarded-for  $remote_addr;
	#             proxy_set_header   X-Real-IP        $remote_addr;
	#             proxy_pass  http://www.hangyejingling.cn:3002;
	#        }


	}
	server {
 		listen 80;
 		#请填写绑定证书的域名
 		server_name hangyejingling.cn; 
 		#把http的域名请求转成https
 		return 301 https://$host$request_uri; 
	}

后端app.js如下修改

const options = {
	key: fs.readFileSync(path.join(__dirname, './../ssl/hangyejingling.cn.key')),
	cert: fs.readFileSync(path.join(__dirname,'./../ssl/hangyejingling.cn_bundle.crt'))
};
const server = https.createServer(options, app);

server.listen(3002, () => {
	console.log('Server listening on port 3002');
});

3.3 https的利弊

利:现在浏览器默认打开的都是https协议的网站,所以我们如果使用https曝光量会增加很多。
弊:ssl证书部署麻烦。切本地开发用ip请求接口,都会500。必须手动现在浏览器输入一下接口url。

与记录一次全栈经验,所有遇到的坑。(文中无需梯子,免费使用chatGPT方法喔)相似的内容:

记录一次全栈经验,所有遇到的坑。(文中无需梯子,免费使用chatGPT方法喔)

## 1、先推荐一下自己搭的网站 ### 1.1 网站地址:[chatGPT](https://www.hangyejingling.cn/) ### 1.2 建站原因 为了方便大家在国内使用chatGPT,所以我调研了一下。在国内用腾讯云使用代理访问,gpt3.5API。最后模仿了openAI的官

记一次 .NET 某设备监控系统 死锁分析

一:背景 1. 讲故事 上周看了一位训练营朋友的dump,据朋友说他的程序卡死了,看完之后发现是一例经典的死锁问题,蛮有意思,这个案例算是学习 .NET高级调试 入门级的案例,这里和大家分享一下。 二:WinDbg 分析 1. 程序为什么会卡死 因为是窗体程序,所以看主线程的线程栈就好了,如果卡在

记一次栈溢出异常问题的排查

刚修改的服务,推到开发环境之后,总是时不时的崩溃,但是不知道为什么。尝试找到他的最后一次调用,也没有复现。 没有办法,只能抓dump了。 开启崩溃自动dump,网络上很多,不赘述了。 拿到dump之后,首先看看是什么类型的异常 如图所示,是个栈溢出的异常。 打印一下堆栈,发现密密麻麻的全是这个代码。

记一次 .NET 某工控视觉系统 卡死分析

## 一:背景 ### 1. 讲故事 前段时间有位朋友找到我,说他们的工业视觉软件僵死了,让我帮忙看下到底是什么情况,哈哈,其实卡死的问题相对好定位,无非就是看主线程栈嘛,然后就是具体问题具体分析,当然难度大小就看运气了。 前几天看一篇文章说现在的 .NET程序员 不需要学习**WinDbg** ,

面试官:transient关键字修饰的变量当真不可序列化?我:烦请先生教我!

一、写在开头 在这篇文章中记录一下之前自己面试时学到的东西,是关于transient关键字的,当时面试官问我IO的相关问题,基本上全答出来了,关于如何不序列化对象中某个字段时,我果断的选择了static和transient,但面试官紧接着问了我:“transient关键字修饰的变量当真不可序列化吗?

万字长文详述ClickHouse在京喜达实时数据的探索与实践

在引入ClickHouse过程中经历各种困难,耗费大量精力去探索并一一解决,在这里记录一下希望能够给没有接触过ClickHouse的同学提供一些方向上的指引避免多走弯路,如果文中有错误也希望多包含给出指点,欢迎大家一起讨论ClickHouse相关的话题。本文偏长但全是干货,请预留40~60分钟进行阅读。

MySQL读取的记录和我想象的不一致

摘要:并发的事务在运行过程中会出现一些可能引发一致性问题的现象,本篇将详细分析一下。 本文分享自华为云社区《MySQL读取的记录和我想象的不一致——事物隔离级别和MVCC》,作者:砖业洋__。 事务的特性简介 1.1 原子性(Atomicity) 要么全做,要么全不做,一系列操作都是不可分割的,如果

[转帖]性能分析之TCP全连接队列占满问题分析及优化过程(转载)

https://cloud.tencent.com/developer/article/1420726 前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的。 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时

[转帖]性能分析之TCP全连接队列占满问题分析及优化过程

https://www.cnblogs.com/wx170119/p/12068005.html 前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的。 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时候,有

[转帖]性能分析之TCP全连接队列占满问题分析及优化过程(转载)

https://www.cnblogs.com/wx170119/p/12068005.html 前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的。 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时候,有