NGINX 前后端分离配置

前后端分离的开发已是主流,本文主要是记录前后端分离项目的 NGINX 配置。 前端 Vue web 入口 host.test 后端 PHP Yii service 入口 host.test/api server { listen 80; server_name host.test; root /data/project/web/dist/; index index.html index.php; location ^~/api { root /data/project/service/web/; access_log logs/service-access.log; error_log logs/service-error.log; fastcgi_pass 127.0.0.1:9000; include fastcgi.conf; fastcgi_param SCRIPT_FILENAME /data/project/service/web/index.php; fastcgi_param SCRIPT_NAME /api/index.php; } location /index.html { add_header Cache-Control "no-cache, no-store"; } location ^~ / { alias /data/project/web/dist/; access_log logs/web-access.log; error_log logs/web-error.log; } } 负载均衡场景 前端 Vue web 入口 host.test 后端 PHP Yii service 入口 host.test/api 代理到 api.host.test WEB server { listen 80; server_name host.test; root /data/project/web/dist/; access_log logs/web-access.log; error_log logs/web-error.log; location /index.html { add_header Cache-Control "no-cache, no-store"; } location / { index index.php index.html index.htm; try_files $uri $uri/ /index.html; } location ^~/api/ { proxy_set_header Host api.host.test; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_pass http://api.host.test/; } } SERVICE server { listen 80; server_name api.host.test; root /data/project/service/web/; location / { access_log logs/service-access.log; error_log logs/service-error.log; index index.php index.html; try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { fastcgi_pass 127.0.0.1:10071; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SERVER_NAME $http_host; fastcgi_ignore_client_abort on; } } NGINX 配置转发 location 进行的是模糊匹配。 ...

March 17, 2020 · 2 min · 241 words · Me

【PRCC2019 全套入门教程】笔记

u1s1 本教程质量一般,推荐看看 李兴兴 老师的教程。 用视频记录生活越来越普及,年初旅行也拍了些素材,想着自己也当个 up 主。先来学学 PR。【PR】Premiere Pro CC 2019 全套入门教程 | bilibili 是我在 B 站看的第一套教学视频,坦白说内容不多,有不少重复的东西,但是这样适合完全零基础的同学。 课代表来收我的课后作业:【交作业】PR CC 2019 全套入门教程 课后作业 | 菲菲与帆 。 我的一条 VLOG:【VLOG】#01 新年之旅 成都 第一日 | 菲菲与帆 欢迎来一键三连。 01-基础流程 1、窗口乱了后:【窗口-工作区-编辑&重置为保存的布局】alt + shift + 0 2、【文字工具】加字幕 3、修改字体:【窗口-基础图形】选择编辑 4、【剃刀】剪切多余素材 5、本素材图片来自 http://unsample.net/ 02-转场效果 1、选择素材点击左键拖拽到【左下窗口】 右下的文件夹可以快速新建文件夹,方便素材分类 2、时序新建时,选择 HDV 720 3、ctrl + d 添加转场效果 4、【左下窗口】(项目窗口)选择【效果】视频过渡,可以切换效果 5、点击时序上的过渡,【左上窗口】选择【效果控件】,可以编辑转场效果的持续时间、对齐等 03&04-视频转场特效&音频特效 1、【左上窗口】选择【效果控件】,可以编辑视频效果、过渡效果 2、视频效果,可以点击秒表的图标添加关键帧 3、新建时查看、修改【暂存盘】位置 4、【编辑-首选项-时间轴】可以修改:静止图片默认持续时间等, 已经导入的素材无效 5、【时序窗口】计时器可以点击编辑,输入 500 会跳到第 5 秒的位置 6、音频过渡,结尾声音淡出 ...

March 13, 2020 · 1 min · 170 words · Me

PHP FTP 间歇性无法上传文件

2020-04-23 后记:疑似是前置的负载均衡服务器有问题,改为直接使用真实 IP 后问题消失。 PHP Warning: ftp_put(): php_connect_nonb() failed: Operation now in progress (115) in ... 环境 PHP 5.6.40。在开发过程中遇到了一个很诡异的情况,在使用 FTP 函数上传文件时,会间歇性无法上传文件。找了几圈有说是 PHP bug、有说是防火墙,都不解决问题。 最后找到了一篇 Why is my PHP script intermittently unable to upload a file via FTP? | stackoverflow 解了大急。(当搜索结果没有找到答案时,可以考虑换几个相近的词再试试) 解决方法:进行循环调用尝试。 // 尝试 5 次 $uploaded = false; $tries = 0; while (!$uploaded && $tries <= 5) { ++$tries; $conn = ftp_ssl_connect($host, $port, 10) or die('FTP服务器连接失败'); //登陆(通过用户名或者匿名登陆) $result = ftp_login($conn, $user, $password); if (!$result) { ftp_close($conn); die('ftp_login 失败'); } ftp_set_option($conn, FTP_USEPASVADDRESS, false); // turn passive mode on ftp_pasv($conn, true); $success = ftp_put($conn, $remoteFile, $localFile, FTP_BINARY); if ($success) { $uploaded = true; dump("ftp upload: $success, $remoteFile, $localFile"); } else { dump("ftp upload failed, tries: $tries"); } ftp_close($conn); } 循环 try 第二次就成功了,不知为啥。PHP の FTP(S)通信で php_connect_nonb() failed: Operation now in progress (115) | qiita 这篇文章有分析,读后还是不太清楚,望有缘人来指导。 ...

February 27, 2020 · 1 min · 158 words · Me

回顾 2019

新裤子 · 夏日终曲 2019 年的第一天从三亚开始,在 第一市场海鲜市场 买了海味,然后直接到旁边的 林姐香味海鲜 加工,迟到了超级好吃的香辣蟹。飞回北京就是滑雪团建,年后双双得到了最佳合作奖,感谢我们每周的火锅,让大家多了些感情。 – EOF – 年后买了烤箱烹饪技术再次升级,烤鸡翅、披萨、蛋挞甚至烤鱼,都已不在话下。受 shilei 推荐也喜欢玩德州扑克。看 B 站 UP 主自驾游,疯狂迷恋上了房车一段时间,还去看了一次房山的房车展(够远的),应该会结下不解之缘。 3 月 29 日公司 7 周年,第一次庆祝公司周年,吃蛋糕前大家合了张影。这张照片我挺感动的,说不好具体的原因,可能是因为大家的笑容吧。清明小假在奥森玩了个露营,是真的有点冷。涛爷来北京面试,转头就成了科大博士,给劲儿。 4 月中的一个双休日和爸妈南下,和比比定了亲 🎉🎉🎉。 5 月乐队的夏天,是今年开过最好的综艺,刺猬、新裤子很棒。 2019 年过去了,我很怀念它。

December 31, 2019 · 1 min · 32 words · Me

Lonicera Framework

项目代码:imzyf/lonicera | GitHub 【PHP 核心技术与最佳实践】第二版 第 6 章 读书笔记 Lonicera Framework - Every French soldier carries a marshal’s baton in his knapsack. MVC MVC 模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。 Lonicera 0.1 bootstrap index.php 单一入口模式。 启动 PHP 内置 Web 服务器: php -S localhost:7070 路由器层 更偏向于使用 PATH_INFO 方式来访问。 从传统 URL 参数模式的访问地址进行解析,提取里面的 group、controller、action、param 4 个参数,随后交给 bootstrap 进行 dispatch 处理。 数据模型 用 PDO 来实现连接数据库。 ORM Object Relational Mapping 对象与数据库的映射叫作对象关系映射 PO Persistent Object 把一个数据库中的表的一行记录对应的对象称为持久对象 BO Business Object 业务对象 把业务逻辑封装为一个对象 VO Value Object 值对象 界面显示的数据对象 DTO Data Transfer Object 用在热呵呵需要数据传输的地方 DAO Data Access Object 指代 Active Record 模式中的数据对象 传统的 ORM 模式提倡数据对象和负责持久化的代码的分开,但是这并没有坚持数据操作的工作量。还有一种 ORM 模式叫作 Active Record。在 Active Record 中,模型层集成了 ORM 的功能,他们及代表实体,包含因为业务逻辑,又是数据对象,并负责把自己存储到数据库中。 ...

December 19, 2019 · 2 min · 281 words · Me

Windows 文本文件到 Mac 中文乱码

文本文件从 Windows 系统复制到 Mac 系统中文发生乱码,原因肯定是编码问题。 解决办法 iconv | wikipedia 它的作用是在多种国际编码格式之间进行文本内码的转换。 iconv [OPTION...] [-f ENCODING] [-t ENCODING] [INPUTFILE...] iconv -f <原始编码> -t <目标编码> <输入文件> -o <输出文件> iconv -f GB18030 -t utf-8 <infile.txt> outfile.txt References 文本文件从 Windows 拷贝到 Mac 乱码 | super2bai – EOF –

December 9, 2019 · 1 min · 43 words · Me

Git log 统计分析

统计个人增删行数 git config user.name git log --author="zhaoyifan" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' - added lines: 82813, removed lines: 53707, total lines: 29106 统计每个人增删行数 git log --shortstat | grep -E "(Author: )(\s*(\w+)){2}|fil(e|es) changed" | awk ' { if($1 ~ /Author/) { author = $2" "$3 } else { files[author]+=$1 inserted[author]+=$4 deleted[author]+=$6 } } END { for (key in files) { print "Author: " key "\n\tfiles changed: ", files[key], "\n\tlines inserted: ", inserted[key], "\n\tlines deleted: ", deleted[key] } } ' 统计每个人提交次数 git shortlog -sn --no-merges 忽略某些路径的更改 git log -- . ":(exclude)sub" git log -- . ":!sub" cloc AlDanial/cloc - cloc counts blank lines, comment lines, and physical lines of source code in many programming languages. ...

December 3, 2019 · 3 min · 557 words · Me

Git 批量修改历史 commit 中 user.email

注意:此操作会修改 Git 历史记录,正式工作环境不允许。 查询都有什么: git log --format='%aN %aE' | sort -u 注:一个特殊情况如果 email 没被设置过 OLD_EMAIL 可以填 user.name。 OLD_EMAIL 原来的邮箱 CORRECT_NAME 更正的名字 CORRECT_EMAIL 更正的邮箱 git filter-branch -f --env-filter ' OLD_EMAIL="old@qq.com" CORRECT_NAME="new_name" CORRECT_EMAIL="new@gmail.com" if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] then export GIT_AUTHOR_NAME="$CORRECT_NAME" export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL" fi if [ "$GIT_AUTHOR_NAME" != "$CORRECT_NAME" ] then export GIT_AUTHOR_NAME="$CORRECT_NAME" export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL" fi ' --tag-name-filter cat -- --branches --tags 因为修改了 Git 历史所有要使用强制推送: ...

December 2, 2019 · 1 min · 127 words · Me

CentOS yum 升级 git 版本

先去官网看看 Download for Linux and Unix: RHEL and derivatives typically ship older versions of git. You can download a tarball and build from source, or use a 3rd-party repository such as the [IUS Community Project](https://ius.io/) to obtain a more recent version of git. RHEL 和衍生通常提供较老版本的 git。您可以下载 tarball 并从源代码构建,或者使用第三方存储库,如 IUS Community Project 来获得最新版本的 git。 使用 IUS RHEL/CentOS 7 yum install \ https://repo.ius.io/ius-release-el7.rpm \ https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 安装新版 git: ius 通常会在高版本的软件名后面 + u yum list git 如果你已经装有低版本的 git,你需要先 remove(否则安装的时候会报错) yum remove git 安装 2.0 以上版本的 git ...

November 25, 2019 · 1 min · 146 words · Me

CRLF will be replaced by LF

git add . warning: CRLF will be replaced by LF in X. CRLF:windows 环境下的换行符 LF:linux 环境下的换行符 这个错误的意思,就是文件中存在两种环境的换行符,git 会自动替换 CRLF 为 LF ,所以提示警告。 首先推荐扩展阅读:配置 Git 处理行结束符 | GitHub 我项目中是配置了 .gitattributes 的: # Set the default behavior, in case people don't have core.autocrlf set. * text=auto # Explicitly declare text files you want to always be normalized and converted # to native line endings on checkout. *.c text *.h text # Declare files that will always have CRLF line endings on checkout. *.sln text eol=crlf # Denote all files that are truly binary and should not be modified. *.png binary *.jpg binary .gitattributes 公式:要匹配的文件模式 属性1 属性2 ...。 ...

November 22, 2019 · 2 min · 216 words · Me