标签: http

使用 ETag 与 LastModified 作为 CDN 缓存验证器有何优点和缺点?

我正在Azure CDN 上阅读这篇文章。我可以通过以下方式控制缓存:

  1. ETag
  2. 上一次更改
  3. 默认启发式

前两种选择的优点和缺点是什么?有关系吗?

一个人可能工作的地方与另一个人可能工作的地方可能是:

  • 跨域调用
  • 私人浏览
  • IFrames
  • 阿贾克斯

...该数据要么通过这些方法可见,要么通过其他方法可见。

http cdn etags azure

5
推荐指数
1
解决办法
3491
查看次数

尝试将 nginx 中的 HTTP 重定向到 HTTPS 作为 jenkins 的反向代理时,服务器的回复为空

我\xe2\x80\x99m 在 Nginx 后面运行 Jenkins,并使用 Let\xe2\x80\x99s 加密 SSL 证书。如果我通过访问该网站https://jenkins.mydomain.de/,一切正常。但是当我通过 访问它时http://jenkins.mydomain.de/,Firefox 说 \xe2\x80\x9cConnection was Reset.\xe2\x80\x9d 并且curl 说 \xe2\x80\x9c来自服务器的空回复\xe2\x80\x9d

\n\n

我该如何调试这个?我真的不知道在哪里寻找问题。nginx 日志 don\xe2\x80\x99t 包含任何有关它的信息。我怀疑下面配置中有关端口 80 的部分因其他指令而无效,但我不\xe2\x80\x99 不知道如何调查它。

\n\n
$ curl -svL http://jenkins.mydomain.de/\n* Hostname was NOT found in DNS cache\n*   Trying my.ip.add.ress...\n* Connected to jenkins.mydomain.de (my.ip.add.ress) port 80 (#0)\n> GET / HTTP/1.1\n> User-Agent: curl/7.38.0\n> Host: jenkins.mydomain.de\n> Accept: */*\n> \n* Empty reply from server\n* Connection #0 to host jenkins.mydomain.de left intact\n
Run Code Online (Sandbox Code Playgroud)\n\n

当使用 telnet 与服务器通信时,只要我按一次 return (即之后GET / HTTP/1.1 …

http nginx https redirect jenkins

5
推荐指数
1
解决办法
3134
查看次数

IIS 在 ARR 之前重写位置标头

我们有一个重写配置,在如下配置中将 ARR 视为反向代理:

Browser client (OriginA) <-> IIS/ARR (OriginB) <-> Server
Run Code Online (Sandbox Code Playgroud)

客户端是任意数量的网络浏览器。我们无法更改此配置。

  1. 客户端请求http://originb/return,请求中包含http://origina/done.html等 URL。
  2. 然后 ARR 将请求转发到http://server/return
  3. 服务器响应时将Location标头设置为http://origina/done.html和 HTTP 302。我已使用 Wireshark 验证了这一点。
  4. 管道中的 IIS 正在将Location标头更改为http://originb/done.html这就是问题开始的地方。
  5. ARR 在标头的 PATTERN_MATCH 步骤中查看 originb URL Location
  6. ARR 将 originb URL 报告为LocationGENERAL_RESPONSE_HEADERS 步骤中的标头。
  7. 客户端盲目接受URL并重定向到不存在的http://originb/done.html而不是http://origina/done.html

我已经启动了失败请求跟踪,这就是我看到的第 5 步和第 6 步。

是什么导致 IISLocation在 ARR 之前重写标头?我可以使用其他任何 IIS 工具来解决这个问题吗?

iis http arr

5
推荐指数
1
解决办法
3436
查看次数

PHP-FPM - 错误 503 - 尝试连接到 Unix 域套接字失败

我在服务器上收到此错误(CentOs 7):

[proxy:debug] proxy_util.c(2209): [client 80.251.245.153:61902] AH00944: connecting fcgi://127.0.0.1/data/webs/dev/index.php to 127.0.0.1:8000
[proxy:debug] proxy_util.c(2246): [client 80.251.245.153:61902] AH02545: fcgi: has determined UDS as /tmp/php56-fpm.sock
[proxy:debug] proxy_util.c(2418): [client 80.251.245.153:61902] AH00947: connected /data/webs/dev/index.php to httpd-UDS:0
[proxy:error] (2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /tmp/php56-fpm.sock (*) failed
[proxy_fcgi:error] AH01079: failed to make connection to backend: httpd-UDS
[proxy:debug] proxy_util.c(2171): AH00943: FCGI: has released connection for (*)
Run Code Online (Sandbox Code Playgroud)

套接字存在,我尝试将权限更改为 777,但不起作用:

 ls -l /tmp/php56-fpm.sock
-rw-rw----. 1 apache apache 0 Feb 17 16:11 …
Run Code Online (Sandbox Code Playgroud)

http httpd php-fpm apache-2.4

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

启用 nginx 上游 keepalive 的风险

使用 nginx 作为带有 PHP 后端的 Apache 的 HTTP 反向代理(我需要为网站管理员提供 .htaccess 灵活性)。看到 Apache 日志中使用的 http/1.0 让我了解如何启用保持活动连接。

在我的搜索中,我发现了 Nginx 的这篇博客文章https://www.nginx.com/blog/avoiding-top-10-nginx-configuration-mistakes/#no-keepalives

默认情况下,NGINX 为每个新的传入请求打开一个到上游(后端)服务器的新连接。这是安全但效率低下的,[...]

如果默认行为是安全的,那么启用上游 keepalive 的风险是什么?

http nginx reverse-proxy keepalive

5
推荐指数
1
解决办法
1万
查看次数

适用于具有许多不同服务的少数服务器的良好主机名约定?

我正在考虑根据他们提供的服务为我们的服务器设置主机名约定,例如 http、https、smtp、pop、dns、sql 等。每个服务都在 Xen 主机服务器 (dom0) 上的自己的虚拟机上),其中有多个 Xen 主机服务器 (10+)。我已经阅读了 Sun 的 Mark Garner 和 RFC 1178 的 Datacenter Naming Scheme 以及一些 Google 搜索,但这些搜索似乎侧重于拥有许多只执行少数服务的服务器,例如更大的数据库集群(10+)服务器、大型 Web 服务器集群、大型邮件服务器集群等。在我的情况下,我们正在使用小型虚拟服务器集群 (2-4) 来提供大量服务 (12+)。在这方面,我不喜欢为每个服务使用不同的主机名主题的想法,例如所有邮件服务器都以鸟类命名,树之后的所有数据库服务器,等等,因为我认为它会因为很少的主机和很多不同的服务而变得混乱。我想知道是否有人有在这样的环境中定义主机名的好主意。谢谢你。

http sql hostname

4
推荐指数
1
解决办法
5356
查看次数

如何在 lighttpd 上禁用未加密的流量(端口 80)

我们想运行一个仅限 SSL 的 lighttpd 进程。应该使用哪个配置选项来关闭端口 80 及其未加密的流量?

Lighttpd 文档仅提供对 https 流量的“重定向”,但我们希望在端口 80 上完全静音。我们希望 lighttpd 仅在 443 上侦听加密(https)流量。

更新【解决方案】

设置“ server.port = 443”没有帮助。SSL 配置是:

$SERVER["socket"] == "0.0.0.0:443" {
                  ssl.engine                  = "enable"
                  ssl.pemfile                 = "/etc/cert.pem"
}
Run Code Online (Sandbox Code Playgroud)

那给出了错误。

can't bind to port: 0.0.0.0 443 Address already in use
Run Code Online (Sandbox Code Playgroud)

删除条件 SSL 完全解决了问题,配置变为:

server.port                 = 443
ssl.engine                  = "enable"
ssl.pemfile                 = "myweb.pem"
Run Code Online (Sandbox Code Playgroud)

ssl http https lighttpd

4
推荐指数
1
解决办法
1万
查看次数

“http://serverfault.com/questions/ask”中的“//”代表什么?

我使用的URL所有的时间打字他们在使用和不使用“ // ”的“后HTTP: ”但什么是“ // ”真正代表什么?

http url

4
推荐指数
1
解决办法
451
查看次数

忽略 Varnish VCL 中的 GET 参数

好的:我已经建立了一个站点,其中包含一些我们向开发人员公开的 API,它们采用以下格式

/api/item.xml?type_ids=34,35,37&region_ids=1000002,1000003&key=SOMERANDOMALPHANUM
Run Code Online (Sandbox Code Playgroud)

在这个 URI 中,type_ids 总是被设置,region_ids 和 key 是可选的。

需要注意的重要一点是,关键变量不会影响响应的内容。它用于请求的内部跟踪,因此我们可以识别发出缓慢或其他不需要的请求的人。

在 Varnish 中,我们有一个像这样的 VCL:

if (req.http.host ~ "the-site-in-question.com") {
  if (req.url ~ "^/api/.+\.xml") {
    unset req.http.cookie;
  }
}
Run Code Online (Sandbox Code Playgroud)

我们只是去除 cookie 并让后端完成其余的工作(就时间而言,这是一种 hackaround,因为 Rails/authlogic 发送带有 API 响应的会话 cookie)。

但目前,任何不同的开发人员基本上都在访问不同的缓存,因为它们&key=SOMEALPHANUM被视为 Varnish 哈希存储的一部分。这显然不是一个很好的解决方案,我正在尝试找出如何告诉 Varnish 忽略 URI 的那部分。

http nginx cache varnish ruby-on-rails

4
推荐指数
1
解决办法
7976
查看次数

为什么 apache 会用代码 200 记录对 GET http://www.google.com 的请求?

我最近被问到“是什么导致我们的 access.log 中出现这样的一行?”

59.56.109.181 - - [22/Feb/2010:16:03:35 -0800]“获取http://www.google.com/ HTTP/1.1" 200 295 "-" "Mozilla/5.0(兼容;MSIE 5.01 ; Win2000)"

我的直接回答是有人在探索一些有点狡猾的东西。

但:

  • 如何?推测...一个简短的 perl 或 python 脚本可以很容易地连接并请求一个带有无效主机的 URL。
  • 漏洞?当他们这样做时,他们在寻找什么,他们学到了什么,我们应该修补它吗?
  • 我需要一顶锡箔帽子来防止他们读懂我的想法吗?
  • 对我来说真正的问题是:那不应该是 404 响应,而不是 200 响应!?

这是在标准 LAMP 服务器 (Ubuntu) 上。

linux http httpd vulnerabilities apache-2.2

4
推荐指数
1
解决办法
9060
查看次数