小编Tob*_*bia的帖子

如何在nginx反向代理中重写Set-Cookie的域部分?

我有一个简单的 nginx 反向代理:

server {
  server_name external.domain.com;
  location / {
    proxy_pass http://backend.int/;
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是Set-Cookie响应头包含;Domain=backend.int,因为后端不知道它正在被反向代理。

如何让 nginx 重写Set-Cookie响应头的内容,替换;Domain=backend.int;Domain=external.domain.com

Host在这种情况下,不更改传递标头不是一种选择。

Apache httpd有此功能已有一段时间了,请参阅ProxyPassReverseCookieDomain,但我似乎找不到在 nginx 中执行相同操作的方法。

rewrite nginx reverse-proxy cookies

31
推荐指数
2
解决办法
9万
查看次数

我可以将 OS X 资源分支存储在 Samba 共享中*其他*而不是 dotbar 文件中吗?

OS X 资源分支是附加到常规文件的备用数据流。它们可能包含文件的自定义图标、彩色标签、关键字或由用户或应用程序设置的任何其他元数据。

OS X 的 HFS+ 文件系统原生支持它们,但是每当 OS X 挂载另一个文件系统时,无论是本地(FAT32)还是远程(NFS、SMB),它们都存储在所谓的“dotbar”文件中:常规文件的资源分支name.ext是存储在另一个常规但隐藏的文件中._name.ext。(不要将它们与.DS_Store存储目录视图设置的文件混淆,例如图标与列视图,或其窗口的位置。)

dotbar._文件的问题在于它们是目标文件系统中的实际常规文件,与原始文件具有相同的扩展名,因此在许多方面造成了严重破坏。例如,Ant 和 Maven 将看到._MyClass.java另一个要编译的 Java 文件。

我看到OS X 可以配置为在 SMB 命名流中存储资源分支,并且 Samba 可以配置为在 POSIX 扩展属性中存储命名流,或者,在其他地方的仓库目录中

这两种解决方案都可以解决 dotbar 文件污染目标文件系统的问题,但我无法正常工作。

 
属性

首先我尝试使用 xattr:

vfs objects = streams_xattr
kernel oplocks = no
Run Code Online (Sandbox Code Playgroud)

后一种选择是由于这个错误。在安装之前,我告诉 OS X 使用它,在共享的根目录中执行此操作:

touch .com.apple.smb.streams.on
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用 Finder 复制文件时,出现此错误:

Finder无法完成操作,因为“hello.java”中的某些数据无法读取或写入。
(错误代码 -36)

 
仓库

然后我尝试使用仓库:

vfs objects = streams_depot
Run Code Online (Sandbox Code Playgroud)

.com.apple.smb.streams.on在共享的根。尝试使用 Finder …

samba mac-osx

15
推荐指数
1
解决办法
2127
查看次数

为什么`zfs list -t snapshot` 比`ls .zfs/snapshot` 慢几个数量级?

对于我尝试过的所有 ZFS-on-Linux 版本,zfs list用于列出文件系统或卷 ( zfs list -r -t snapshot -H -o name pool/filesystem) 的所有快照总是比 运行时间多几个数量级ls .zfs/snapshot,这是直接的:

$ time ls -1 /srv/vz/subvol-300-disk-1/.zfs/snapshot
[list of 1797 snapshots here]
real    0m0.023s
user    0m0.008s
sys     0m0.014s

# time zfs list -r -t snapshot -H -o name vz/subvol-300-disk-1
[same list of 1797 snapshots]
real    1m23.092s
user    0m0.110s
sys     0m0.758s
Run Code Online (Sandbox Code Playgroud)

此错误是否特定于 ZFS-on-Linux?

任何拥有 Solaris 或 FreeBSD ZFS 机器的人都可以执行类似的测试(在旋转硬盘上有数百个快照的文件系统上)吗?

是否有一种解决方法可以快速获取一个的快照列表,该本质上没有.zfs目录?

我已经在内核 2.6.32-43-pve x86_64 (Proxmox) 上使用 …

zfs zfsonlinux

7
推荐指数
1
解决办法
6992
查看次数

如何在后端升级期间暂停 Nginx 请求

我希望 Nginx 在升级或重新启动后端服务、执行数据库迁移或其他一些管理任务时,在短时间内暂停(保留)http 请求,而不会对最终用户造成错误。

基本上我想做以下操作序列:

  1. 告诉 Nginx 停止将请求转发到我的后端,而是将它们保存在其异步队列中;
  2. 等待并在对后端的所有待处理请求完成时收到通知;
  3. 升级、重启或以其他方式对空闲的后端服务进行操作;
  4. 使用其私有地址快速验证后端服务是否正常运行;
  5. 打开 Nginx 的闸门,让所有待处理的请求通过。

理想情况下,这将使我能够执行需要对整个后端服务器进行独占访问的管理任务,例如重新启动、升级或迁移,而不会对最终用户造成比延迟更严重的事情,希望不到一分钟。

我找到了这个解决方案,但它没有解决第 2 点。此外,它需要将 Lua 解释器编译到 Nginx 中,可能会导致任何内存泄漏和安全问题。

是否有专门针对此问题的配置技巧或 Nginx 模块?可以用股票 Nginx 来完成,也许通过测试控制文件的存在?

其他管理员一般如何解决这个问题?

(我知道通用且有点庞大的uWSGI 应用程序服务器具有此功能以及其他数百种功能,但我宁愿避免在 Nginx 和我的后端之间引入另一个元素。)

nginx

6
推荐指数
1
解决办法
2544
查看次数

标签 统计

nginx ×2

cookies ×1

mac-osx ×1

reverse-proxy ×1

rewrite ×1

samba ×1

zfs ×1

zfsonlinux ×1