我有一个简单的 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 中执行相同操作的方法。
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 …
对于我尝试过的所有 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) 上使用 …
我希望 Nginx 在升级或重新启动后端服务、执行数据库迁移或其他一些管理任务时,在短时间内暂停(保留)http 请求,而不会对最终用户造成错误。
基本上我想做以下操作序列:
理想情况下,这将使我能够执行需要对整个后端服务器进行独占访问的管理任务,例如重新启动、升级或迁移,而不会对最终用户造成比延迟更严重的事情,希望不到一分钟。
我找到了这个解决方案,但它没有解决第 2 点。此外,它需要将 Lua 解释器编译到 Nginx 中,可能会导致任何内存泄漏和安全问题。
是否有专门针对此问题的配置技巧或 Nginx 模块?可以用股票 Nginx 来完成,也许通过测试控制文件的存在?
其他管理员一般如何解决这个问题?
(我知道通用且有点庞大的uWSGI 应用程序服务器具有此功能以及其他数百种功能,但我宁愿避免在 Nginx 和我的后端之间引入另一个元素。)