标签: static-content

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万
查看次数

Nginx 发送 2 个缓存控制标头

我正在使用 ngnix 提供我的静态内容。

位置/静态{
      别名 /opt/static/blog/;
      access_log off;
      etags 上;
      etag_hash on;
      etag_hash_method md5;
      过期 1 天;
      add_header Pragma "public";
      add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

生成的标题如下所示:

缓存控制:公共,必须重新验证,代理重新验证
缓存控制:最大年龄=86400
连接:关闭
内容编码:gzip
内容类型:应用程序/x-javascript;字符集=utf-8
日期:2012 年 9 月 11 日,星期二 08:39:05 GMT
标签:e2266fb151337fc1996218fafcf3bcee
到期:2012 年 9 月 12 日星期三 08:39:05 GMT
上次修改时间:2012 年 9 月 11 日,星期二 06:22:41 GMT
语用:公开
服务器:nginx/1.2.2
传输编码:分块
变化:接受编码

为什么 nginx 发送 2 个 Cache-Control 条目,这对客户端来说是一个问题吗?

nginx cache static-content etags

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

使用 gzip 提供静态文件时,强制 Nginx 发送 Content-Length 标头

我们正在运行 Nginx 0.7.65[-1ubuntu2.3]。我刚刚注意到,当使用alias指令 and提供本地静态文件时gzip onContent-Length没有发送标头。由于它从本地文件系统提供文件,因此获取长度应该没有任何问题。如何强制 Nginx 发送Content-Length包含这些文件的标头?

nginx gzip static-content

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

提供 70,000 个静态文件 (jpg) 的最佳方式?

我需要使用 nginx 提供大约 70,000 个静态文件 (jpg)。我应该将它们全部转储到一个目录中,还是有更好(有效)的方法?由于文件名是数字,我考虑使用如下目录结构:

xxx/xxxx/xxx

操作系统为 CentOS 5.1

performance nginx web-server static-content

5
推荐指数
2
解决办法
1550
查看次数

多个apache服务器或CDN的Etag配置/谷歌如何做ETags?

我有一个由两台 apache2 服务器提供服务的应用程序,我想在静态内容上配置 ETag。将来我也想使用 CDN。我看到这应该是一个问题,因为 Etag 信息因服务器而异......

Apache 1.3 和 2.x 的 ETag 格式是 inode-size-timestamp。尽管给定的文件可能跨多台服务器驻留在同一目录中,并且具有相同的文件大小、权限、时间戳等,但它的 inode 因一台服务器而异。

因此,如果您使用多个网络服务器来托管您的应用程序(就像您每天使用的 90% 的网络应用程序一样),这应该是一个问题。但是我看到谷歌使用 Etags,当然他们使用多个服务器和 CDN 和边缘缓存等......我收到任何缓存的谷歌内容的 304 响应。他们是怎么做到的呢?您如何解决多服务器问题?有没有办法用Apache配置它?

web-server static-content cdn apache-2.2

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

替代 heroku 或谷歌应用引擎的静态文件

我正在为我的家人创建一个简单的站点,它基本上只是静态文件(我不想要 CMS)。

我试过使用 heroku 和谷歌应用引擎,但 heroku 关闭了服务器,这会在某些请求上产生 30 秒的延迟,谷歌应用引擎最多需要 500 毫秒来提供静态页面。

所以我的问题是,是否有 Heroku 和 google 应用程序引擎的替代方案来在云中托管内容。
它不一定是免费的,但我想将费用控制在每月 10 美元以下。

我总是可以租一个普通的 VPS 或类似的东西,但根据我的经验,在提供文件方面,它们可能比应用引擎更糟糕。


我已经测试了一个运行 nginx 与应用引擎的本地服务器,看起来应用引擎的性能相当好,它比本地服务器落后大约 500 毫秒,但由于它使用 CDN,因此后续请求可能会更快。

web-hosting google-app-engine static-content google-cloud-platform

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

为 IIS7 和 MVC 创建单独的静态内容站点

参考这篇 serverfault 博客文章:一些速度改进,其中讨论了如何从单独的无 cookie 域提供 stackexchange 的静态内容......

有人将如何在 IIS7.5 上为 ASP.NET MVC 站点执行此操作?

到目前为止的计划:

  • 注册域名例如static.com,在IIS中创建一个新网站
  • 按原样手动复制 MVC 中的 js/css/images 文件夹,以便它们在新服务器上具有相同的路径
  • 启用 IIS gzip 设置(js/css = 高压缩,图像 = 无)
  • 设置具有远期到期日期的缓存
  • <clientCache cacheControlCustom="public" /> 在 web.config 中
  • 切勿在 static.com 站点上设置任何 cookie
  • 组合和最小化 js / css
  • 使用 WebDeploy 自动部署静态内容中的更改

这个计划正确吗?

您如何使用 WebDeploy 将整个 Web 应用程序部署到一台服务器,然后仅将静态项目部署到另一台服务器?

我可以看到有一个类似的问题,但对于 apache:Creating a cookie-free domain to serve static content so it does not apply

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

5
推荐指数
0
解决办法
766
查看次数

Django 找不到使用 uWSGI 的管理页面的 CSS 文件

即使我按照官方说明进行操作,当我使用 uWSGI 启动 Django 测试站点时,也不会加载管理界面的 CSS 文件。例如http://localhost:8443/static/admin/css/base.css,如果我打开 CSS 文件的 URL,则会收到 404 错误。我搜索了本地文件,我猜它的路径是/usr/local/lib/python3.3/dist-packages/django/contrib/admin/static/admin/css/base.css; 所以我也尝试以 root 身份运行 uwsgi,但没有任何改变。

我使用没有问题python3 manage.py runserver。如果我打开http://localhost:8000/static/admin/css/base.css,文件将加载到浏览器中,并将样式应用于管理页面。

这是我在 bash 中执行的命令:

uwsgi --ini ~/.uwsgi/conf/django.ini --set-placeholder project_name=mysite --set-placeholder port=8443
Run Code Online (Sandbox Code Playgroud)

这是 django.ini 的内容:

[uwsgi]
module = %(project_name).wsgi:application
https = :%(port),/usr/local/nginx/conf/server.crt,/usr/local/nginx/conf/server.key,HIGH
strict = true
chdir = /home/marco/django-projects/%(project_name)
env = DJANGO_SETTINGS_MODULE=%(project_name).settings
socket = /home/marco/.uwsgi/%(project_name).socket
pidfile = /home/marco/.uwsgi/%(project_name).pid
daemonize = /home/marco/.uwsgi/%(project_name).log
master = true
enable-threads = true
harakiri = 20
max-requests = 5000
vacuum …
Run Code Online (Sandbox Code Playgroud)

python django static-content uwsgi

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

嵌套位置中的 Nginx 反向代理

我使用 Nginx 作为多个服务器中多个应用程序的反向代理,并且尝试将通用缓存指令添加到每个应用程序的静态文件中。

我原来的配置是这样的:

location /app1{
    ...
    proxy_pass http://127.0.0.1:8081/app1;
}

location /app2{
    ...
    proxy_pass http://127.0.0.1:8082/app2; 
}

...
Run Code Online (Sandbox Code Playgroud)

要添加静态文件指令,我可以向每个位置添加嵌套位置,如下所示:

location /app1{
    ...
    proxy_pass http://127.0.0.1:8081/app1;
    location ~* \.(css|js|ico|gif|jpg|jpeg|png)$ {
        expires 1d;
        ...
        proxy_pass http://127.0.0.1:8081;
    }
}

location /app2{
    ...
    proxy_pass http://127.0.0.1:8082/app2;
    location ~* \.(css|js|ico|gif|jpg|jpeg|png)$ {
        expires 1d;
        ...
        proxy_pass http://127.0.0.1:8082;
    }
}
Run Code Online (Sandbox Code Playgroud)

由于我有大约 30 个应用程序,因此我尝试将代码简化为如下所示:

location /app1{
    ...
    proxy_pass http://127.0.0.1:8081/app1;
    include static_file_config.conf;
}

location /app2{
    ...
    proxy_pass http://127.0.0.1:8081/app2;
    include static_file_config.conf;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以简化代码,这样我就不会以 30 个相同的静态文件位置结束?

请注意,每个应用程序都有自己的静态文件。

nginx cache reverse-proxy static-content

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

Nginx 在简单的 PHP 项目中无法正确提供 CSS

我现在已经看到了几个这样的例子:Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:3001/assets/css/bootstrap.min.css"。但是,我无法理解可能是什么原因造成的。

我的简单 PHP 项目中的 CSS 文件没有被提供。状态代码为200,文件确实加载,并且可以从开发人员控制台查看其内容。我还检查了该/etc/nginx/mime.types文件,它有一个text/css. 最后,这是我的网站配置:

server {
    listen 3001 default_server;
    listen [::]:3001 default_server;

    server_name _;

    location / { 
        root /media/common/code/projects/newdf;
        try_files $uri $uri/ =404;
        include fastcgi_params;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }   
}
Run Code Online (Sandbox Code Playgroud)

即使在代码中,HTML 标记也将类型指定为text/css

<link rel="stylesheet" type="text/css" href="<?php echo $server_url; ?>/assets/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="<?php echo $server_url; ?>/assets/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="<?php echo …
Run Code Online (Sandbox Code Playgroud)

nginx static-content php-fpm

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