标签: static-content

使用 Nginx 提供静态文件时禁用缓存(用于开发)

我们正在使用 Nginx 在开发平台上提供静态文件。由于它是一个开发平台,我们希望禁用缓存,以便将每个更改传播到服务器。VHost 的配置非常简单:

server {
  server_name  static.server.local;
  root /var/www/static;

  ## Default location
  location / {
    access_log        off;
    expires           0;
    add_header        Cache-Control private;
  } 
}
Run Code Online (Sandbox Code Playgroud)

当我们访问一个 HTML 文件(http://static.server.local/test.html)时,我们没有问题:只要文件没有改变,服务器就会返回一个代码304 Not Modified,并返回一个200 OK响应更改文件时修改的文件。
但是,对于 Javascript 或 CSS 文件,它的行为似乎有所不同。文件更改后,我们会按预期获得200 OK响应,但使用旧文本。
Nginx 中是否有可以解释这种行为的内部缓存机制?或者我们应该添加一些配置?

作为旁注,这是修改文件时 Nginx 返回的标头(似乎是正确的):

Accept-Ranges:bytes
Cache-Control:max-age=0
private
Connection:keep-alive
Content-Length:309
Content-Type:text/css
Date:Fri, 13 May 2011 14:13:13 GMT
Expires:Fri, 13 May 2011 14:13:13 GMT
Last-Modified:Fri, 13 May 2011 14:13:05 GMT
Server:nginx/0.8.54
Run Code Online (Sandbox Code Playgroud)

编辑
在使用expires指令和Cache-Control …

nginx virtualbox cache static-content

93
推荐指数
2
解决办法
10万
查看次数

IIS7 在请求静态内容时返回空白

我正在尝试配置一个演示机器,它是带有 Windows 7 家庭高级版的 EEEPC,所有驱动程序都正确加载(不要问我为什么是家庭版)并安装了 IIS7。

我已经在作为 ASP.NET MVC 站点的机器上部署了要演示的应用程序,通过控制台添加了网站,添加了一个应用程序池。应用程序池作为 NetworkService 运行,来宾身份验证作为 IUSR。

我已经添加了对 NetworkService 的修改权限,以及对网站文件夹及其内容的 IUSR 的读取和执行权限。

当我访问网络的根目录时,比如说 http://example.com/我从网站上获得了一个正确的 HTML(这意味着应用程序可以工作),但问题是所有静态内容都返回空白。

我不确定为什么会这样。没有 404 或 500 错误页面,当我访问静态内容时只是普通的空响应。所有 ASP.NET 生成的内容都可以正常工作(虽然有点奇怪,因为所有 CSS 和图像都不会加载)

请帮忙,IIS7 管理控制台对我来说很困惑,我明天需要这台机器。

iis-7 asp.net static-content asp.net-mvc

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

使用 Google 的 App Engine 作为静态文件的 CDN

我计划将我的静态文件移动到 Google 的 App Engine。我想知道这是否是一个好主意。

我读过谷歌是否有可能将您的文件缓存在多个位置,在我看来这是一件好事。

使用 GAE 插件在 Eclipse 中设置也应该很容易。

但我仍然对这方面的表现持怀疑态度。App Engine 的设置是否针对提供静态内容进行了优化。现在我有 Nginx 服务器我的静态内容,App Engine 是否会以相同的方式执行。

使用这种方法还有其他的好处或坏处吗?

google-app-engine static-content cdn google-cloud-platform

14
推荐指数
1
解决办法
5146
查看次数

通过 IPv6 访问 Amazon S3 静态网站

在 Amazon S3上托管了一个静态网站,DNS 托管在 Amazon Route 53 上。我希望我的网站可以通过 IPv4 和 IPv6 访问(因为现在是时候了)。

当我使用 Route 53 AWS 管理控制台A为我的 S3 存储桶添加(IPv4)“别名”记录时,系统会提示我输入 S3 存储桶的名称以用作终端节点。当我尝试添加AAAA(IPv6)“别名”记录时,我没有这样的选择:

在此处输入图片说明

尝试AAAA通过A在创建后克隆现有记录来手动设置记录导致错误:

在此处输入图片说明

我知道一个事实,即A“别名”记录将正确的 IPv4 IP 地址放入 Route 53 DNS:

在此处输入图片说明

我不敢手动设置 IPv6 地址,因为我认为不能保证它会保留下来。别名目标设置是亚马逊为静态 S3 站点规定的设置。

因此,我的问题是,Amazon AWS 是否支持通过 IPv6 访问 S3 静态网站,如果支持,我该如何设置?

domain-name-system amazon-s3 static-content amazon-web-services amazon-route53

14
推荐指数
3
解决办法
2667
查看次数

我可以在 nginx 服务的静态文件中使用 nginx 环境变量吗?

如果我在 nginx 配置中使用环境变量,并且将 nginx 配置为仅提供静态文件(html、js、css - 例如 AngularJs 应用程序),有什么方法可以在 nginx 提供的 JS 文件中使用环境变量? 或者是运行非静态服务器(例如 io.js、php 等)的唯一方法。


顺便说一句,您不能在 nginx 的配置中本地使用环境变量。

当我在 nginx 配置中谈论环境变量时,我的意思是在这篇文章中:如何在 Nginx.conf使用环境变量,它们使用env APP_WEB_1_PORT_5000_TCP_ADDR;$ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"};


准确解释您的用例

我的具体用例是我在 docker 容器中有一个由 nginx 驱动的 AngularJS 应用程序。该应用程序是一个“单页应用程序”,它完全使用在另一个系统上运行的 API。目前我在生产和暂存之间运行不同的 docker 容器,因为该应用程序有一些不同的配置,例如 Google-Analtyics 代码。这个特定于环境的数据保存在一个config.js文件中,这些值当前是硬编码的,mastergit 中的分支有一个值,而分支的值不同staging。我想更改设计,以便我可以将相同的容器用于生产和暂存。我想在运行它时将一个 ENV 变量传递到容器中 ( docker run -e GACODE=UA-12345-6 ...) 并让 nginx 使用 ENV 变量(通过env GACODE;$ENV{"GACODE"}这样的config.js文件可以使用传入的 GoogleAnaltyics 代码,而不是对其进行硬编码)。我不知道这是否可能(因此问题;))。仅使用 nginx 使我的容器成为单进程,而如果我必须使用 io.js 那么我将需要多个链接的容器,并且更多的移动部件更复杂)。

nginx environment-variables static-content docker

13
推荐指数
3
解决办法
2万
查看次数

Nginx - 提供来自无 cookie 域的静态内容

我正在使用Firebug的“页面速度”扩展来尝试优化网站,我目前正在研究以下建议:“从无 cookie 的域中提供静态内容”。

我为某些内容创建了一个单独的子域,以便我拥有www.example.comimages.example.com但如何指定它images.example.com是无 cookie 的?我可以强制它在诸如 Nginx 或 Apache 之类的网络服务器中是无 cookie 的,还是仅仅是确保不在服务器端代码(例如 PHP)中在此域中设置任何 cookie 的问题?

我问的原因是因为即使在我尝试修复它之后“Page Speed”仍然显示相同的建议 - 所以我想一些 cookie 一定已经漏掉了。我在浏览器 cookie 搜索中看不到任何 cookie,但如果我检查资源的 HTTP 标头,我可以看到:

Cookie  __utma=73051794.676740941.1271792323.1277710025.1277900715.20; __utmz=73051794.1271792323.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmx=73051794.00009825591030858779:3:0; __utmxx=73051794.00009825591030858779:2295429:2592000; __gads=ID=0a768e3407302ff8:T=1272608001:S=ALNI_MZ-GKhg3ETniU0TVftk0DdGyUypkQ
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何阻止来自我的子域的 cookie?

http nginx cookies static-content cookieless

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

使用 Nginx 反向代理应用程序及其静态文件

我正在尝试做一些在我看来很简单的事情,但我一定是愚蠢的或错过了一些非常明显的事情,因为我无法弄清楚。

我想访问在我的服务器上运行的多个 Web 应用程序,每个应用程序都有一个唯一的前缀:

http://mywebserver/app1 -> localhost:9001
http://mywebserver/app2 -> localhost:9002
...
Run Code Online (Sandbox Code Playgroud)

据我了解,我需要将 Nginx 配置为反向代理,所以我这样做了:

server {
listen 80;
server_name mywebserver;

  location /app1{
    proxy_set_header    Host $host;
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto $scheme;
    proxy_pass          http://127.0.0.1:9001/;
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

此配置允许我访问应用程序的主页http://mywebserver/app1,但未加载静态内容。

当我打开我的浏览器的控制台上,我可以看到它正试图从获得的资源http://mywebserver/static/custom/index.js,而不是像http://mywebserver/app1/static/custom/index.js

我尝试root在 location 块中添加一个指令来为静态提供服务,但由于静态内容请求是 on/而不是 on ,因此未将其考虑在内/app1

如何解决这个问题?有什么明显的我遗漏了还是我完全误解了反向代理的概念?

谢谢你。

nginx web-applications reverse-proxy static-content static-files

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

为大量静态内容服务提供多少 RAM?

我想为我的静态内容制作一个服务器。
我需要提供一些 3-10 mb 的文件 - 很多。(我还将在此服务器上放置一些 .js 和 .css 以及来自我网站的图像)。
我想到了 nginx 和 G-WAN(http://trustleap.com/)。
我不知道提供静态内容需要哪些资源?每次文件传输使用多少 RAM?
如果我使用具有良好端口和巨大带宽的 256 mb(或 512 mb)VPS,我将能够提供多少点击/秒(3-10 mb 文件)?(我知道“这取决于” - 但请根据经验或理论给我一个粗略的估计)。
没有很多文件,只是经常下载 - 我应该考虑缓存,或者这只会使用我提供命中所需的内存?

vps memory nginx static-content g-wan

10
推荐指数
2
解决办法
3万
查看次数

使用 docker + nginx + php-fpm 提供静态内容

我正在尝试使用 docker 配置一个 php webapp。这个想法是php-fpm在一个独立的容器中运行应用程序,并有另一个运行 nginx 的容器。此设置的想法是使用相同的 nginx 容器将请求代理到已经在同一台机器上工作的其他 web 应用程序。问题是我无法nginx正确处理静态文件(js、css 等),因为对这些文件的请求一直转到fpm.

这是文件系统的样子:

/
??? Makefile
??? config
?   ??? webapp.config
??? webapp
    ??? web
        ??? index.php
        ??? static.js
Run Code Online (Sandbox Code Playgroud)

我正在使用Makefile看起来像这样的(对此不感兴趣docker-compose)运行整个事情:

PWD:=$(shell pwd)
CONFIG:='/config'
WEBAPP:='/webapp'

run: | run-network run-webapp run-nginx

run-network:
    docker network create internal-net

run-webapp:
    docker run --rm \
    --name=webapp \
    --net=internal-net \
    --volume=$(PWD)$(WEBAPP):/var/www/webapp:ro \
    -p 9000:9000 \
    php:5.6.22-fpm-alpine

run-nginx:
    docker run --rm \
    --name=nginx \
    --net=internal-net \
    --volume=$(PWD)$(CONFIG)/webapp.conf:/etc/nginx/conf.d/webapp.domain.com.conf:ro \ …
Run Code Online (Sandbox Code Playgroud)

nginx static-content php-fpm docker

10
推荐指数
1
解决办法
5642
查看次数

Apache ProxyPass 忽略静态文件

Apache 前端服务器连接到 Jetty 应用程序服务器时出现问题。

我认为ProxyPass !在位置块中不应该将处理传递给应用程序服务器,但由于某种原因,在我的情况下没有发生,Jetty 在缺少的静态(js、css 等)上显示 404

这是我的 Apache (v 2.4, BTW) 虚拟主机块:

DocumentRoot /path/to/foo
  ServerName foo.com
  ServerAdmin webmaster@foo.com

  RewriteEngine On

  <Directory /path/to/foo>
    AllowOverride  None
    Require all granted
  </Directory>

  ProxyRequests Off
  ProxyVia Off
  ProxyPreserveHost On

  <Proxy *>
    AddDefaultCharset off
    Order deny,allow
    Allow from all
  </Proxy>

  # don't pass through requests for statics (image,js,css, etc.)
  <Location /static/>
    ProxyPass !
  </Location>

  <Location />
    ProxyPass           http://localhost:8081/
    ProxyPassReverse    http://localhost:8081/
    SetEnv              proxy-sendchunks 1
  </Location>
Run Code Online (Sandbox Code Playgroud)

jetty static-content proxypass apache-2.4

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