按照教程配置好服务器域名(需备案)以及ssl证书后发现网站仍然无法连接
尝试了多种方法仍然难以建立连接,于是与相关的同学交流尝试使用他们的方法,即在服务器与本机上进行flask通信,代码如下:
服务器:
import os
from flask import Flask, request, jsonify
from flask_cors import CORS
app = Flask(__name__)
CORS(app) # 允许跨域请求
app = Flask(__name__)
UPLOAD_FOLDER = 'uploads'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
@app.route('/get_string', methods=['GET'])
def get_string():
return jsonify({'message': 'Hello, this is a string from the backend!'})
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=11937)
本机:
import os
from flask import Flask, request, jsonify
import requests
from flask_cors import CORS
app = Flask(__name__)
CORS(app) # 允许跨域请求
UPLOAD_FOLDER = 'uploads'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
@app.route('/proxy_get_string', methods=['GET'])
def proxy_get_string():
url = 'http://127.0.0.1:11937/get_string' # 服务器上的Flask地址
response = requests.get(url)
if response.status_code != 200:
return jsonify({'error': 'Error fetching string from remote server'}), 500
return jsonify(response.json())
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=8080) # 本机的Flask代理服务
写一个html网页来响应:
<!DOCTYPE html>
<html>
<head>
<title>Flask Proxy Example</title>
<script>
function fetchString() {
fetch('http://localhost:8080/proxy_get_string')
.then(response => response.json())
.then(data => {
document.getElementById('output').innerText = data.message;
})
.catch(error => console.error('Error:', error));
}
</script>
</head>
<body>
<h1>Flask Proxy Example</h1>
<button onclick="fetchString()">Get String</button>
<p id="output"></p>
</body>
</html>
得到的网页如图:
点击按钮,后台响应如下:
我们尝试调整了端口仍然无法解决(但很困惑别人的项目使用5000这个端口就可以)
于是我们询问服务器管理员,发现我们的大模型环境存在于一个docker内,而该docker只对外开放了一个端口(登录端口),并且修改端口或映射可能会扰乱服务器内的环境。
当然,如果你不存在这样的特殊的服务器情况的话,可以选择以下处理方式做一下映射就可以:
Docker部署Nginx+SSL,https访问失败_docker nginx 配置ssl完无法访问-CSDN博客
ssh -L 8443:localhost:8443 -p 20007 root@你的服务器
ssh
: 这个命令用于通过安全外壳协议 (SSH) 连接到远程服务器。-L 8443:localhost:8443
: 这是端口转发选项,表示将本地主机的 8443 端口转发到远程服务器的 8443 端口。具体解释如下:8443
: 本地计算机的端口。localhost
: 目标主机地址,在这个上下文中是指远程服务器自身。8443
: 远程服务器的端口。
-p 20007
: 指定用于连接到远程服务器的 SSH 端口号为 20007。默认情况下,SSH 使用端口 22,但在这里是使用了非标准端口 20007。root@你的服务器
: 这是用于连接到远程服务器的登录凭证,其中root
是用户名,你的服务器
是远程服务器的主机名或 IP 地址。