我有一个备份过程,它从磁盘读取大量数据,因此将所有内存用于磁盘缓存,在此过程中交换应用程序和其他缓存数据。备份完成后将备份数据保留在磁盘缓存中没有任何好处,因此我想限制内核可以为该进程缓存的数据量。是否可以?
谢谢,
我知道我的设置有点疯狂,但无论如何......
我在 Openshift 上设置了 Nginx 来缓存地图图块(对于地图查看器,您可以猜到目的,:-)),这些图块由我的家庭网络提供,该网络带宽有限(愚蠢的无线连接!)。Openshift 为我提供了无限带宽和 1 GB 磁盘,这应该足以缓存地图的热门部分。
但是,地图查看器喜欢发出这样的请求:
http://localhost/tiles/world/t/-1_0/-27_23.png?1381358434308
Run Code Online (Sandbox Code Playgroud)
这让 nginx 认为该文件不可缓存!我已经做了一些谷歌搜索,但由于我在阅读和编写正则表达式方面很糟糕,我想(从你那里)请求一种方法让 nginx 忽略 .png 文件的查询字符串,并且只从缓存中提供版本而不需要请求参数。
以下是服务器配置的相关部分:
http {
proxy_cache_path ${OPENSHIFT_RUNTIME_DIR}/cachefile levels=1:2 keys_zone=my-cache:599m max_size=700m inactive=250m;
proxy_temp_path ${OPENSHIFT_RUNTIME_DIR}/cachefile/tmp;
include mime.types;
default_type application/octet-stream;
# Format for our log files
log_format main '$remote_addr - $remote_user [$time_local] $status '
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
keepalive_timeout 5;
access_log ${OPENSHIFT_LOG_DIR}/access.log;
port_in_redirect off;
server_tokens off;
tcp_nopush on; # off may be better for Comet/long-poll stuff
tcp_nodelay off; # on may be …Run Code Online (Sandbox Code Playgroud) 我的问题是关于使用 Nginx 作为另一个代理背后的代理。(有点混乱。)
我想设置 Nginx,以便它充当 npm 镜像的缓存代理服务器。这是链接:http : //eng.yammer.com/a-private-npm-cache/
在我的本地机器上,不受防火墙限制,以下配置工作正常:
proxy_cache_path /var/cache/npm/data levels=1:2 keys_zone=npm:20m max_size=1000m
inactive=365d;
proxy_temp_path /var/cache/npm/tmp;
server {
listen 80;
server_name classen.abc.lan;
location / {
proxy_pass http://registry.npmjs.org/;
proxy_cache npm;
proxy_cache_valid 200 302 365d;
proxy_cache_valid 404 1m;
sub_filter 'registry.npmjs.org' 'classen.abc.lan';
sub_filter_once off;
sub_filter_types application/json;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想将它应用到位于附加防火墙后面的服务器。在日志中,我可以确认它访问了正确的上游 IP,但由于内部防火墙,请求失败。
我们有一个内部代理,我可以用它绕过防火墙,例如:
$ curl http://registry.npmjs.org
curl: (7) couldn't connect to host
$ http_proxy=http://proxy.abc.lan:1234/ curl http://registry.npmjs.org
... succeeds ...
Run Code Online (Sandbox Code Playgroud)
这个技巧不适用于 Nginx,因为它忽略了http_proxy环境变量。看了文档,还是想不通怎么修改配置,让它内部可以使用代理。
是否可以结合两种解决方案?重要的是缓存仍然有效,否则,您可以直接使用外部镜像 registry.npmjs.org。
也许,Nginx 应该使用内部代理(proxy.abc.lan)作为proxy_pass,但是内部代理如何知道应该将请求发送到外部 npm 镜像( …
我在单个 IP 地址上运行 Proxmox 服务器,它将根据请求的主机向容器发送 HTTP 请求。
我在 Proxmox 端使用 nginx 来监听 HTTP 请求,我proxy_pass在不同server块中使用指令根据server_name.
我的容器在 Ubuntu 上运行,同时也在运行一个 nginx 实例。
我在完全静态的特定网站上缓存时遇到问题:在文件更新后,nginx 继续为我提供陈旧的内容,直到我:
proxy_cache off为此服务器设置并重新加载配置这是我的配置的详细信息:
在服务器上(proxmox):
/etc/nginx/nginx.conf:
user www-data;
worker_processes 8;
pid /var/run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
use epoll;
}
http {
##
# Basic Settings
##
sendfile on;
#tcp_nopush on;
tcp_nodelay on;
#keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off; …Run Code Online (Sandbox Code Playgroud) 我在尝试让 Nginx 忽略并隐藏代理服务器的一些标头时遇到了麻烦。
我希望 Nginx 隐藏并忽略“Cache-Control”和“Server”标头,但它不起作用,我不知道为什么。
我的配置如下:
location / {
proxy_pass http://111.131.50.42;
proxy_hide_header Cache-Control;
expires 60M;
add_header Cache-Control "public";
proxy_ignore_headers Cache-Control;
proxy_hide_header Cache-Control;
access_log off;
}
Run Code Online (Sandbox Code Playgroud)
但即便如此,我仍然收到原始“Cache-Control”和“Server”标头。
你知道我做错了什么吗?
PS 我不能使用 ngx_headers_more 模块。我无法将此模块添加到我们的 Nginx 安装中。
遇到写 I/O 时,日志列中zpool iostat -v永远不会显示任何 ZIL 活动。这导致将数据写入磁盘时的等待时间高于预期(有时在争用期间超过 80 毫秒)。
capacity operations bandwidth
pool alloc free read write read write
---------------- ----- ----- ----- ----- ----- -----
storage 1.88T 2.09T 3 3.01K 512K 39.3M
mirror 961G 1.05T 0 1.97K 128K 20.8M
mpathf - - 0 393 0 20.8M
mpathg - - 0 391 128K 20.6M
mirror 961G 1.05T 2 1.04K 384K 18.5M
mpathi - - 1 379 256K 21.1M
mpathj - - 0 281 128K 18.3M
logs - - …Run Code Online (Sandbox Code Playgroud) 我想知道为什么 Cloulflare 不会缓存某个静态 js 文件。
鉴于要求:
curl -I http://www.testlifeinuk.com/dist/lifeinuk.js
Run Code Online (Sandbox Code Playgroud)
标题返回如下:
HTTP/1.1 200 OK
Date: Mon, 12 Jan 2015 10:59:21 GMT
Content-Type: application/javascript
Connection: keep-alive
Set-Cookie: __cfduid=d11a9f01292153436a211a9d807a3399b1421060361; expires=Tue, 12-Jan-16 10:59:21 GMT; path=/; domain=.testlifeinuk.com; HttpOnly
X-Powered-By: Express
Etag: W/"507660-1420797981000"
Cache-Control: public, max-age=1382400
Last-Modified: Fri, 09 Jan 2015 10:06:21 GMT
Vary: Accept-Encoding
Via: 1.1 vegur
CF-Cache-Status: MISS
Expires: Wed, 28 Jan 2015 10:59:21 GMT
Server: cloudflare-nginx
CF-RAY: 1a78d818b4af0b81-LHR
Run Code Online (Sandbox Code Playgroud)
令我困惑的是,无论我做了多少次请求,它总是返回
CF-Cache-Status: MISS
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?
我似乎找不到足够的文档。我有一个生成一些动态响应的应用程序,但仍然可以从Last-Modified标题中受益——所以我发送了它。
但是,打开if_modified_since(设置为before,根据http://nginx.org/en/docs/http/ngx_http_core_module.html#if_modified_since)似乎对非静态资源没有任何影响。例如,php、python 应用程序。
这是因为 Nginx 不只是查看我的响应Last-Modified标头吗?因为我可以看到它们似乎设置正确,如下所示:
> GET /3.0/view.json?id=2 HTTP/1.1
> Host: xxxxxxxxxxxxx
> Accept: */*
> If-Modified-Since: Sat, 02 May 2015 19:43:02 GMT
>
< HTTP/1.1 200 OK
* Server nginx/1.4.7 is not blacklisted
< Server: nginx/1.4.7
< Date: Fri, 01 May 2015 19:56:05 GMT
< Content-Type: application/json; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Encoding
< Last-Modified: Fri, 01 May 2015 19:56:05 GMT
Run Code Online (Sandbox Code Playgroud)
或者我忽略了更大的东西?只是好奇是如何 …
在清除 DNS 缓存之前是否有一个标准的持续时间,以便如果分心的操作员或卡住的密钥将 86400 的 TTL 转换为 864000000,您最终不会得到权威资源记录甚至整个 DNS 区域,其更改不会承认 27.397 年?
而且,如果没有针对此类错误的保护,那么允许 TTL 持续时间长达 68 年而不是最大可能是一个月的原因是什么?
我的代理缓存路径设置为非常高的大小
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=staticfilecache:180m max_size=700m;
Run Code Online (Sandbox Code Playgroud)
并且使用的大小仅为
sudo du -sh *
14M cache
4.0K proxy
Run Code Online (Sandbox Code Playgroud)
代理缓存有效设置为
proxy_cache_valid 200 120d;
Run Code Online (Sandbox Code Playgroud)
我通过以下方式跟踪 HIT 和 MISS
add_header X-Cache-Status $upstream_cache_status;
Run Code Online (Sandbox Code Playgroud)
尽管有这些设置,我还是看到了很多未命中。这是我在一小时前故意运行缓存预热器的页面。
我如何调试这些 MISS 发生的原因?我如何确定未命中是否是由于驱逐、到期、某些流氓头球等造成的?Nginx 是否为此提供命令?
编辑:完整配置
# at http level
proxy_cache_path /var/lib/nginx/cache levels=1:2 inactive=400d keys_zone=staticfilecache:180m max_size=700m;
proxy_temp_path /var/lib/nginx/proxy;
proxy_connect_timeout 30;
proxy_read_timeout 120;
proxy_send_timeout 120;
#prevent header too large errors
proxy_buffers 256 16k;
proxy_buffer_size 32k;
#httpoxy exploit protection
proxy_set_header Proxy "";
# at server level
add_header Cache-BYPASS-Reason $skip_reason;
# define nginx variables …Run Code Online (Sandbox Code Playgroud) cache ×10
nginx ×6
http-headers ×2
linux ×2
cloudflare ×1
dns-hosting ×1
dns-zone ×1
firewall ×1
hard-drive ×1
proxy ×1
querystring ×1
ttl ×1
zfs ×1
zfsonlinux ×1