我正在尝试在不涉及任何代码的情况下实现跨域HTTP 访问控制。
我的 Apache(2) 服务器使用此块返回正确的访问控制标头:
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "POST, GET, OPTIONS"
Run Code Online (Sandbox Code Playgroud)
我现在需要阻止 Apache 在浏览器发送HTTP OPTIONS请求(它存储在REQUEST_METHOD环境变量中)时执行我的代码,返回200 OK.
当请求方法为 OPTIONS 时,如何配置 Apache 以响应“200 OK”?
我试过这个mod_rewrite块,但访问控制头丢失了。
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
Run Code Online (Sandbox Code Playgroud) 我想设置 statsd/graphite,以便我可以记录在 HTML 设备上运行的 JS 应用程序(即不在包含的 LAN 环境中,并且可能有大量我无法直接控制的传入数据)。
我的限制:
总之,数据路径:[client] -(http)-> [http2statsd] -(udp)-> [statsd] -(tcp)-> [graphite] -(nfs)-> [filer]
到目前为止我的发现:
所以我想知道是否有人有经验和最佳实践可以分享一个可靠的 statsd/graphite 部署?
只是想知道是否有人在 Apache 上使用过 Google SPDY?http://code.google.com/p/mod-spdy/
我运行了几个 Web 服务器,并且很想知道 mod_spdy Apache 模块是否存在任何问题,以及是否有人看到 SPDY 支持的浏览器的速度明显提高?
如何在 Apache Web 服务器上启用对 RFC 2616 中定义的所有 HTTP 方法的处理?这些将是:
OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT
Run Code Online (Sandbox Code Playgroud)
我使用的是 Apache HTTP Server,版本 2.2.22 (Ubuntu)
这是我的.htaccess文件:
<Location /output>
Dav On
<LimitExcept GET HEAD OPTIONS PUT>
Allow from all
</LimitExcept>
</Location>
Run Code Online (Sandbox Code Playgroud)
这是我从运行 Telnet 得到的输出——没有 PUT 方法:
Escape character is '^]'.
OPTIONS / HTTP/1.0
HTTP/1.1 200 OK
Date: Tue, 09 Oct 2012 06:56:42 GMT
Server: Apache/2.2.22 (Ubuntu)
Allow: GET,HEAD,POST,OPTIONS
Vary: Accept-Encoding
Content-Length: 0
Connection: close
Content-Type: text/html
Connection closed by foreign host. …Run Code Online (Sandbox Code Playgroud) 最近几天,我注意到一些服务器受到未知请求的影响。
他们中的大多数是这样的:
60.246.*.* - - [03/Jan/2015:20:59:16 +0200] "GET /announce.php?info_hash=%80%85%8e%9bu%cfJ.%85%82%e9%25%bf%8e%9e%d7%bf%c5%b0%12&peer_id=-UT3420-v%8bN%aa%60%60%fd%5d%d1%b0Ux&port=15411&uploaded=48588531&downloaded=0&left=0&corrupt=0&key=9E124668&numwant=200&compact=1&no_peer_id=1 HTTP/1.1" 200 -
Run Code Online (Sandbox Code Playgroud)
经过一些记录和搜索,我发现一些中国 ISP(根据 whatsmydns.net 的结果可能是 CERNET)和一些土耳其 ISP(可能是 TTNET)响应 dns 查询,例如a.tracker.thepiratebay.org使用与piratebay 无关的各种 IP或种子。换句话说,他们似乎出于某种奇怪的原因进行了某种 DNS 缓存中毒。
因此,这些国家/地区的数百个(如果不是数千个)bittorrent 客户端向我的网络服务器发出大量“通知”,这几乎导致 DDoS 攻击填满了 Apache 的所有连接。
目前,我完全阻止了中国和土耳其,它可以完成工作,但我想找到一种更好的方法来阻止这些请求。
我正在考虑使用基于 HTTP 主机标头的 mod_security 阻止这些请求。
所有这些请求都包含一个 HTTP Host 标头a.tracker.thepiratebay.org(或 thepiratebay.org 域的许多其他子域)。
这是通过 PHP$_SERVER变量的请求标头转储。
DOCUMENT_ROOT: /usr/local/apache/htdocs
GATEWAY_INTERFACE: CGI/1.1
HTTP_ACCEPT_ENCODING: gzip
HTTP_CONNECTION: Close
HTTP_HOST: a.tracker.thepiratebay.org
HTTP_USER_AGENT: uTorrent/342(109415286)(35702)
PATH: /bin:/usr/bin
QUERY_STRING: info_hash=%80%85%8e%9bu%cfJ.%85%82%e9%25%bf%8e%9e%d7%bf%c5%b0%12&peer_id=-UT3420-v%8bN%aa%60%60%fd%5d%d1%b0Ux&port=15411&uploaded=48588531&downloaded=0&left=0&corrupt=0&key=9E124668&numwant=200&compact=1&no_peer_id=1
REDIRECT_STATUS: 200
REMOTE_ADDR: 60.246.*.*
REMOTE_PORT: 3445
REQUEST_METHOD: GET
REQUEST_URI: /announce.php?info_hash=%80%85%8e%9bu%cfJ.%85%82%e9%25%bf%8e%9e%d7%bf%c5%b0%12&peer_id=-UT3420-v%8bN%aa%60%60%fd%5d%d1%b0Ux&port=15411&uploaded=48588531&downloaded=0&left=0&corrupt=0&key=9E124668&numwant=200&compact=1&no_peer_id=1
SCRIPT_FILENAME: /usr/local/apache/htdocs/announce.php
SCRIPT_NAME: …Run Code Online (Sandbox Code Playgroud) 当您想要在 IIS 6.0 (Windows Server 2003) 上启用 HTTP 压缩时,您需要做/考虑很多事情。
有人可以提供一个完整的列表,列出您必须采取的措施才能正确启用 HTTP 压缩吗?
我有一个具有以下配置的 HTTP 场:
listen webfarm 10.254.23.225:80
mode http
balance roundrobin
cookie SERVERID insert
option httpclose
option forwardfor
option httpchk HEAD /check.txt HTTP/1.0
server webA 10.254.23.4:80 cookie A check
server webB 10.248.23.128:80 cookie B check
Run Code Online (Sandbox Code Playgroud)
我想添加一些选项,将特定 URI(即 /special)的所有请求转发到第三个 Web 服务器。我该怎么做?
我正在尝试创建一个为 PHP 脚本提供服务的网络服务器。目前,它的工作原理如下:
php index.phpphp从 STDOUT读取输出并将其返回给客户端除了参数没有传递给 PHP 脚本之外,所有这些都有效,因为:
var_dump($_GET);
Run Code Online (Sandbox Code Playgroud)
返回:
数组(0){}
$_GET调用时如何将参数传递给 PHP 二进制文件?
我收到错误:
Bad Request
Request Line is too large (6060 > 4094)
Run Code Online (Sandbox Code Playgroud)
当我像这样访问服务器上的特定 url 时:
/api/categorize?packages=package1,package2,...packageN
Run Code Online (Sandbox Code Playgroud)
在 nginx.conf 我有:
large_client_header_buffers 8 16k;
client_header_buffer_size 8k;
Run Code Online (Sandbox Code Playgroud)
我找不到有关该特定问题的文档, large_client_header_buffers 的文档提到 400 Bad request,但将“large_client_header_buffers”从 4 8k 更改为;或 8 8k;或 8 16;没有解决问题。
我知道 HTTP2 旨在将所有内容保持在单个 TCP 连接下,我想知道 TCP 连接多久会被断开。
例如,如果我访问 youtube,进行一些浏览,离开站点,然后返回,我会重新使用相同的 HTTPS 连接(就 TCP 4 元组而言,不是会话),还是不同的连接?
其中很多可能是特定于应用程序的,取决于浏览器如何实现它,但它是否在标准中的任何地方指定?
http ×10
apache-2.2 ×4
400 ×1
bittorrent ×1
cgi ×1
compression ×1
google ×1
graphite ×1
haproxy ×1
https ×1
iis ×1
mod-rewrite ×1
mod-security ×1
nginx ×1
performance ×1
php ×1
scalability ×1
security ×1
spdy ×1
statsd ×1
tcp ×1
web ×1