反向代理兼容处理
This commit is contained in:
parent
e441071d50
commit
b2a4029f49
96
README.md
96
README.md
|
@ -1,79 +1,25 @@
|
||||||
![](https://www.thinkphp.cn/uploads/images/20230630/300c856765af4d8ae758c503185f8739.png)
|
可供配置的环境变量
|
||||||
|
-
|
||||||
|
|变量名|描述|默认值|必填|
|
||||||
|
|-|-|-|-|
|
||||||
|
|`NACOS_ADDR`| nacos注册地址 |`192.168.1.105:8848` |*|
|
||||||
|
|`SERVICE_PORT`| 指定外部可以向内访问的端口 |`8000`|*|
|
||||||
|
|`ORIGIN_URL`| 允许跨域的域名 |docker容器内ip|-|
|
||||||
|
|
||||||
ThinkPHP 8.0
|
内部暴露的端口
|
||||||
===============
|
-
|
||||||
|
|端口|描述|
|
||||||
|
|-|-|
|
||||||
|
|`80`| 服务端口 |
|
||||||
|
|
||||||
## 特性
|
容器内的工作目录
|
||||||
|
-
|
||||||
|
- /var/www/html
|
||||||
|
|
||||||
* 基于PHP`8.0+`重构
|
如何保存数据
|
||||||
* 升级`PSR`依赖
|
-
|
||||||
* 依赖`think-orm`3.0版本
|
将文件夹 `/var/www/html/public` 设置为映射到挂载点
|
||||||
* `6.0`/`6.1`无缝升级
|
|
||||||
|
|
||||||
|
注意事项
|
||||||
> ThinkPHP8.0的运行环境要求PHP8.0.0+
|
-
|
||||||
|
将外部文件夹映射到容器内的 `/var/www/html/public` 文件夹时,需要给对应的外部文件夹添加权限,否则上传的文件会无法保存。
|
||||||
现在开始,你可以使用官方提供的[ThinkChat](https://chat.topthink.com/),让你在学习ThinkPHP的旅途中享受私人AI助理服务!
|
|
||||||
|
|
||||||
![](https://www.topthink.com/uploads/assistant/20230630/4d1a3f0ad2958b49bb8189b7ef824cb0.png)
|
|
||||||
|
|
||||||
## 文档
|
|
||||||
|
|
||||||
[完全开发手册](https://doc.thinkphp.cn)
|
|
||||||
|
|
||||||
## 服务
|
|
||||||
|
|
||||||
ThinkPHP生态服务由[顶想云](https://www.topthink.com)(TOPThink Cloud)提供,为生态提供专业的开发者服务和价值之选。
|
|
||||||
|
|
||||||
## 赞助
|
|
||||||
全新的[赞助计划](https://www.thinkphp.cn/sponsor)可以让你通过我们的网站、手册、欢迎页及GIT仓库获得巨大曝光,同时提升企业的品牌声誉,也更好保障ThinkPHP的可持续发展。
|
|
||||||
|
|
||||||
[![](https://www.thinkphp.cn/uploads/images/20230630/48396092a0515886a3da6bd268131c8f.png)](http://github.crmeb.net/u/TPSY)
|
|
||||||
|
|
||||||
[![](https://www.thinkphp.cn/uploads/images/20230630/a12bd248beee0e7491dd0f79dc4dd5e9.png)](https://www.thinkphp.cn/sponsor)
|
|
||||||
|
|
||||||
[![](https://www.thinkphp.cn/uploads/images/20230630/e7f48d909d41dd5ebaf4a5aa982d0455.png)](https://www.thinkphp.cn/sponsor)
|
|
||||||
|
|
||||||
## 安装
|
|
||||||
|
|
||||||
~~~
|
|
||||||
composer create-project topthink/think tp
|
|
||||||
~~~
|
|
||||||
|
|
||||||
启动服务
|
|
||||||
|
|
||||||
~~~
|
|
||||||
cd tp
|
|
||||||
php think run
|
|
||||||
~~~
|
|
||||||
|
|
||||||
然后就可以在浏览器中访问
|
|
||||||
|
|
||||||
~~~
|
|
||||||
http://localhost:8000
|
|
||||||
~~~
|
|
||||||
|
|
||||||
如果需要更新框架使用
|
|
||||||
~~~
|
|
||||||
composer update topthink/framework
|
|
||||||
~~~
|
|
||||||
|
|
||||||
## 命名规范
|
|
||||||
|
|
||||||
`ThinkPHP`遵循PSR-2命名规范和PSR-4自动加载规范。
|
|
||||||
|
|
||||||
## 参与开发
|
|
||||||
|
|
||||||
直接提交PR或者Issue即可
|
|
||||||
|
|
||||||
## 版权信息
|
|
||||||
|
|
||||||
ThinkPHP遵循Apache2开源协议发布,并提供免费使用。
|
|
||||||
|
|
||||||
本项目包含的第三方源码和二进制文件之版权信息另行标注。
|
|
||||||
|
|
||||||
版权所有Copyright © 2006-2023 by ThinkPHP (http://thinkphp.cn) All rights reserved。
|
|
||||||
|
|
||||||
ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
|
|
||||||
|
|
||||||
更多细节参阅 [LICENSE.txt](LICENSE.txt)
|
|
||||||
|
|
|
@ -25,7 +25,12 @@ class Index
|
||||||
|
|
||||||
$env = new Env();
|
$env = new Env();
|
||||||
// thinkphp里面无法获取SERVER_ADDR变量,会被nacos拦截替换
|
// thinkphp里面无法获取SERVER_ADDR变量,会被nacos拦截替换
|
||||||
$serverIP = $env->get('SERVICE_ADDR', '192.168.1.161:8000');
|
// 服务暴露的端口
|
||||||
|
$servicePort = $env->get('SERVICE_PORT', 8000);
|
||||||
|
// 服务可以访问到的IP
|
||||||
|
$serverIP = $env->get('SERVER_ADDR');
|
||||||
|
// 允许跨域的域名
|
||||||
|
$originUrl = $env->get('ORIGIN_URL', $serverIP);
|
||||||
|
|
||||||
// 组装保存路径
|
// 组装保存路径
|
||||||
$savename = \think\facade\Filesystem::disk('upload')->putFile('uploads', $file);
|
$savename = \think\facade\Filesystem::disk('upload')->putFile('uploads', $file);
|
||||||
|
@ -36,7 +41,7 @@ class Index
|
||||||
'msg' => null,
|
'msg' => null,
|
||||||
'data' => [
|
'data' => [
|
||||||
"name" => $trueName,
|
"name" => $trueName,
|
||||||
"url" => 'http://' . $serverIP . '/' . $savename,
|
"url" => '//' . $originUrl . '/' . $savename,
|
||||||
// "url" => 'http://192.168.1.105:8080/file/' . $savename,
|
// "url" => 'http://192.168.1.105:8080/file/' . $savename,
|
||||||
],
|
],
|
||||||
// 'env' => $env->get(),
|
// 'env' => $env->get(),
|
||||||
|
|
22
start.php
22
start.php
|
@ -10,16 +10,19 @@ use think\Env;
|
||||||
|
|
||||||
// 读取环境变量
|
// 读取环境变量
|
||||||
$env = new Env();
|
$env = new Env();
|
||||||
// wokerman里面能准确获取SERVER_ADDR变量,没有HTTP_HOST变量
|
// nacos的注册地址
|
||||||
$serverAddr = $env->get('SERVICE_ADDR', '192.168.1.161:8000');
|
|
||||||
$nacosAddr = $env->get('NACOS_ADDR', '192.168.1.105:8848');
|
$nacosAddr = $env->get('NACOS_ADDR', '192.168.1.105:8848');
|
||||||
|
// 服务可以访问到的IP
|
||||||
|
$serviceAddr = $env->get('SERVER_ADDR');
|
||||||
|
// 服务暴露的端口
|
||||||
|
$servicePort = $env->get('SERVICE_PORT', 8000);
|
||||||
|
|
||||||
$task = new Worker();
|
$task = new Worker();
|
||||||
|
|
||||||
// 定时触发邮件发送任务
|
// 定时触发邮件发送任务
|
||||||
// 开启多少个进程运行定时任务,注意业务是否在多进程有并发问题
|
// 开启多少个进程运行定时任务,注意业务是否在多进程有并发问题
|
||||||
$task->count = 1;
|
$task->count = 1;
|
||||||
$task->onWorkerStart = function(Worker $task) use ($serverAddr, $nacosAddr)
|
$task->onWorkerStart = function(Worker $task) use ($serviceAddr, $servicePort, $nacosAddr)
|
||||||
{
|
{
|
||||||
$client = new Client([
|
$client = new Client([
|
||||||
// nacos地址
|
// nacos地址
|
||||||
|
@ -27,21 +30,20 @@ $task->onWorkerStart = function(Worker $task) use ($serverAddr, $nacosAddr)
|
||||||
"timeout" => 5
|
"timeout" => 5
|
||||||
]);
|
]);
|
||||||
// 心跳检测,每8秒执行一次
|
// 心跳检测,每8秒执行一次
|
||||||
Timer::add(8, function() use ($client, $serverAddr)
|
Timer::add(8, function() use ($client, $serviceAddr, $servicePort)
|
||||||
{
|
{
|
||||||
list ($serverIP, $serverPort) = explode(':', $serverAddr);
|
$client->request("put", "/nacos/v1/ns/instance/beat", [
|
||||||
$response = $client->request("put", "/nacos/v1/ns/instance/beat", [
|
|
||||||
"form_params" => [
|
"form_params" => [
|
||||||
"serviceName" => "zeroerroa-file",
|
"serviceName" => "zeroerroa-file",
|
||||||
"ip" => $serverIP,
|
"ip" => $serviceAddr,
|
||||||
"port" => $serverPort,
|
"port" => $servicePort,
|
||||||
"namespaceId" => "0a1c32f2-dea1-4ec1-b546-cb4635cd7db2",
|
"namespaceId" => "0a1c32f2-dea1-4ec1-b546-cb4635cd7db2",
|
||||||
"groupName" => "DEFAULT_GROUP",
|
"groupName" => "DEFAULT_GROUP",
|
||||||
"beat" => '{
|
"beat" => '{
|
||||||
"cluster": "DEFAULT",
|
"cluster": "DEFAULT",
|
||||||
"ip": "' . $serverIP . '",
|
"ip": "' . $serviceAddr . '",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"port": "' . $serverPort . '",
|
"port": "' . $servicePort . '",
|
||||||
"scheduled": true,
|
"scheduled": true,
|
||||||
"serviceName": "zeroerroa-file",
|
"serviceName": "zeroerroa-file",
|
||||||
"weight": 1
|
"weight": 1
|
||||||
|
|
Loading…
Reference in New Issue