问题标签 [upstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 变基中“上游分支”的含义
在我看来,“上游分支”这个词是模棱两可的,似乎有两个上下文。
上游分支是由本地分支跟踪的分支(请参阅Git 分支 - 远程分支),并且
上游分支是变基上下文中的东西(请参阅Git 分支 - 变基)。
(2) 中的“上游”显示在CLI 帮助中:
第一个对我来说很清楚,但是,就我的一生而言,我似乎无法理解“上游”在rebase
. 此外,我遇到了“多个上游分支”(具有多个上游的 git 分支),这进一步混淆了这个难题。
在我看来,这个“上游分支”的概念需要在 git-scm.com 文档中消除歧义。这将大大有助于理解以下命令:
在 Git 分支 - 变基中描述,以及
variables - 如果未找到上游主机,则使用 proxy_pass 变量来防止 nginx 崩溃
我试图通过使用proxy_pass的变量来防止nginx在找不到上游时崩溃(如this stackoverflow thread中所述):
这样 nginx 启动时不会崩溃,但是当我连接到上游时,会返回一个空的 html 页面而不是资源。
Firefox 返回此错误:
由于返回此文件而不是jquery.min.js
:
以下是一些 nginx 日志:
笔记
此配置完美运行,但上游必须在 nginx 启动之前启动:
我不明白缺少什么,知道吗?
php - NGINX - 从上游读取时拒绝重命名权限
我最近从 Apache 切换到 Nginx。PHP 语言底层并使用 fastcgi_pass 到 php7.4-fpm 来运行所有脚本文件。一切似乎都运行良好。页面正在运行,PHP 正在执行,所有资产加载正常等。但是我的 nginx 错误日志中充斥着这些错误:
2020/11/19 06:28:52 [crit] 3332114#3332114: *26646323 rename() "/tmp/0012831123" 到 "/opt/www/example/web/controller.php" 失败(13:权限被拒绝)在读取上游时,客户端:104.220.189.242,服务器:www.example.com,请求:“GET /path1/path2/path3/ HTTP/1.1”,上游:“fastcgi://unix:/run/php/php7. 4-fpm.sock:”,主机:“www.example.com”,推荐人:“https://www.example.com/”
我一直在尝试用谷歌搜索一个星期,但什么也没有。尝试查看 nginx 缓存文件等的权限,但没有。我真的被难住了。我不知道为什么某些 tmp 文件会试图重命名为应该可执行的实际文件。这似乎很糟糕,而且有点可怕。
任何有关在哪里寻找的帮助或建议将不胜感激。
干杯!
git - Git rebase 在迭代上游开发中
Gitrebase
对我来说是获取线性历史记录的好方法,但最近我对它的行为有点困惑。情况是我有本地仓库、GitLab 上的原始仓库和课程的只读上游仓库。
基本上 TA 在上游 repo 中发布文档和代码,我获取它并合并到我的 repo 中,然后完成实验室。这是一个迭代的过程,因为lab2是在我完成lab1并push到origin之后发布的。在这个迭代中发生了令人困惑的事情。
在 lab3 发布后,我将master
(其中包含我的 lab1 和 lab2 的代码)重新定位到upstream/master
,却发现我的提交都聚集在 git 历史的最新位置,例如:
lab1-TA-release -> lab2-TA-release -> lab3-TA-release -> lab1-my-code(有变基时间)-> lab2-my-code(有变基时间)
我认为是提交时间显示了我的工作轨迹,所以我希望看到的是线性历史,例如:
lab1-TA-release -> lab1-my-code -> lab2-TA-release -> lab2-my-code -> lab3-TA-release
有什么办法可以实现我的愿望吗?
- - -更新 - - -
例如,现在我已经完成了 lab2,lab3 已经发布在upstream/master
. lab3-TA-release
不在我当地的主人身上(所以我不能简单地使用rebase
我的master
)。我需要git rebase upstream/master
先。正是在这里,人们my lab2-my-code
聚集lab1-my-code
在一起,所有人都在新的时间里焕然一新。所以真正的提交时间(当我完成工作时)消失了,我很困惑。
有没有办法自动保留提交的原始时间(意味着实时)并使其线性化?
ssl - 上游代理和 CA 配置
我尝试将 mitmproxy 配置为与另一个域中的上游代理一起使用。
更明确地说,我有一个拥有自己域的平台(例如 mydomain.com),并且要访问互联网,我也需要通过我的公司代理使用自己的域(例如 company.com)。
我为 mitmproxy 生成证书,并且我拥有 CA 和用于生成证书的密钥。我将它们重命名为 mitmproxy-ca.pem (key + ca) 和 mitmproxy-ca-cert.pem (certificate) 并将它们放入 .mitmproxy 文件夹中。即使我没有完全测试,它似乎也能正常工作。
但是对于上游代理 ssl 配置,我将公司 CA 放入 .mitmproxy 文件夹并将其命名为(mycompany-ca.pem)。我配置了 config.yaml 文件:ssl_verify_upstream_trusted_ca: "/home/mitmproxy/.mitmproxy/mycompany-ca.pem"。
但是当我尝试使用 mitproxy 卷曲https://www.google.com时,我遇到了这个错误:
当我为我的浏览器使用我的公司代理时,我可以看到证书主题是 google,但颁发者是我的公司代理信息。
此外,公司代理 CA 只是一个没有任何密钥的证书(看起来很正常),我使用来自 docker 的 mitmproxy。当然,当我使用 --ssl_insecure 选项时它可以工作,但我不想(我不允许)绕过上游代理证书验证。
您知道如何配置上游 SSL 证书控制吗?
dictionary - 从文件加载服务器名称时,Nginx 无法解析服务器名称
我是 nginx 新手并试图实现以下行为:我想将标头传递给 nginx,并根据给定的标头将请求传递给另一台服务器。我想从文件中加载我的地图,所以我使用以下代码
使用以下格式的 port_to_address.map
使用此配置,nginx 正常启动,但是当我将文件中存在的标头传递给他时,他返回以下错误
当我使用 IP 地址而不是服务器名称时,它可以正常工作。我还得到了另一个 nginx,即它从文件(带有上游)读取的节点之间的循环请求,尽管我使用服务器的名称而不是它们的 ip,但我没有得到任何异常。
我阅读了有关使用解析器的信息,但它不起作用,我更愿意避免使用它。有没有其他方法可以在不使用解析器或服务器 ip 的情况下使其工作?(如果需要,我不介意更改地图文件结构)
python - 是否有一种首选方法可以让下游表从数据联合中的两个上游表之一获取数据?
我们正在尝试构建灵活的模式,例如,我们可能有来自两个地方之一的单个单元,或者从原始数据开始的 SpikeSorting 管道,或者从已经完成了峰值排序的文件中导入。
我们希望能够将这些表中任何一个相关的数据输入到下游的相同分析函数/表中。
我们考虑过让 SpikeSorting 表成为计算和导入条目的混合体,但这似乎有点难看。有没有更好的办法?
jenkins - 只有在构建了所有先决条件项目后,才在 Jenkins 中构建一个项目
我只想构建一个项目“D”(例如),但只能在构建上游项目 A、B 和 C 之后。请注意 - 我正在使用 Jenkins 自由式项目来实现我的目的。
这意味着,项目 D 应该只在项目 A、B 和 C 全部构建后执行一次(在任何情况下都是成功/失败)。
我在 Jenkins 中使用“构建触发器”(watch)选项进行了尝试,但是在构建项目 A、B 和 C 之后,它执行项目 D 3 次,即为每个上游项目执行一次项目 D。当项目 A、B 和 C 完成时,我只想执行一次项目 D。我不能附加到其中任何一个,因为项目 A、B 和 C 的完成顺序并非每次都可以预测。因此,我想在完成所有三个先决项目 A、B 和 C 之后执行项目 D 一次。
请让我知道你的方法。
nginx - 带有上游的 nginx 有时会延迟 1 分钟
内部系统
硬件:Xeon E-2236 x 32GB x 1TB SSD ),带 4 个服务器。仅用于负载平衡,用于执行x 2ea,用于db CRUD
软件:centos 7,nginx 1.18,节点 v12.22.1
当外部连接到服务器时,负载均衡服务器发送到反向代理(性能服务器)并计算它。计算完成后,发送到db-server进行记录。它
这项工作需要低性能,所以总是CPU 使用率是 0~2%,RAM 使用率是 3~7%,IO WAIT 是 0%
问题是
当外部请求到达负载服务器时,请求会随机延迟 完美 1 分钟,然后发送到反向代理服务器。并且当请求延迟 1 分钟时,重新启动负载服务器的 nginx ( systemctl restart nginx ) 立即完成请求而没有错误。它处理得很好。
神奇的是,这个问题完美延迟了 1 分钟(花费了 1min 0.02s ~ 1min 0.1s)。当 1 分钟后,它似乎正常(在 50 毫秒内响应几次)但是当来自同一设备的请求时,它每 5 分钟延迟 1 分钟
但是外部 http 连接 x 5000 个请求的完美副本通过 curl 将其从加载服务器发送到加载服务器,
load-server 发送到 perform-server 和 perform-server 到 db-server 花费低于平均 50ms 检查所有 nginx 到反向代理端口和响应,它也低于平均 50ms。
在nuxt-server和api-server中相同。它们从 perform-server 运行 - 每个 localhost:3000, localhost:3001 ~ 3012
加载-nginx.conf:
nginx - 即使上游发送 404,NGINX 能否保持与上游的 TCP 连接打开?
我有一个 NGINX 上游定义,其中涉及通过多个服务器轮换以查找内容。请求的内容仅在这些服务器之一上,所以我一直“尝试”直到找到内容,或者在我用尽所有上游后死亡。这很有效,但是,由于 TCP 开销,“钓鱼”任何没有内容以找到正确服务器的上游服务器都有延迟。
找到内容的服务器已使用 keepalive/HTTP 1.1 方法成功建立连接。
我遇到的问题是 NGINX 关闭了与任何返回 404 的上游服务器的 TCP 连接。因此,下一次,必须在检索另一个 404 并继续(正确的)网络服务器之前建立 TCP 连接。
当与具有 200-fruit 的正确上游服务器建立连接时,该上游连接通过 keepalive 成功建立,随后的内容尝试通过该已建立的连接按预期执行。这很好 - 数据包捕获和 netstats 显示此连接对于多个后续 HTTP 请求的寿命。
我的问题是我想更快地浏览(坏)服务器列表,而不必等待每次“尝试”都建立另一个 TCP 连接。
下游 NGINX 服务器是使用 FIN ACK 发起关闭 TCP 连接的服务器,而不是上游服务器。
下游配置:
甚至上游服务器也希望保持这个连接打开,但是 NGINX 下游无论如何都会终止 TCP 连接。