我运行着一个流量相当大的网站,由于一些不幸的事件,我在 Linode 的云中的机器宕机了。而且我只有一台暴露于外界的负载均衡器机器(一个 IP)。
此外,我的网站是可以镜像的6,000 多个静态页面的候选。现在我的 DNS 是CloudFlare。
我可以做些什么来维护我网站的静态镜像并路由到它,以防我的网站出现故障。
因为我是从 Linode 运行的,所以我没有像Route53这样的东西来检测一个 IP 地址的停机时间并指向另一个 IP 地址。
人们使用静态镜像站点和防止停机的策略是什么?
domain-name-system cache mirroring static-content cloudflare
我在一个文件夹中有 SVG 图像,还有一个 PNG 文件,以确保这些图像显示在页面上。
我的 nginx 配置基本上是这样的:
server {
listen 80;
location / {
root www;
}
}
Run Code Online (Sandbox Code Playgroud)
图像在www/images文件夹中。
我在页面中看到的结构相同:
<img src="images/logo.svg">
<img src="images/logo.png">
Run Code Online (Sandbox Code Playgroud)
PNG 文件按预期显示在页面上,但不是 SVG。不过,它显示在浏览器代码 200 的网络选项卡中,但正文为空。
当我尝试直接打开它时,例如http://localhost/images/logo.svg,它只是将其下载为文件。
我是否需要添加一些特殊的配置来使 SVG 文件可以在像 PNG/JPG 文件这样的页面上显示?
有什么方法可以强制我们仅从 S3 静态网站托管站点的特定 IP 范围进行访问?
cloud amazon-s3 static-content cloud-hosting amazon-web-services
我们新安装了 Windows Server 2012 作为开发服务器。我正在尝试将 DotNetNuke 安装到站点,但是当我运行安装向导时,当站点出现时,不会提供静态内容(例如,没有图像、CSS 或 JavaScript)。
静态内容角色已安装在服务器上,已安装 StaticFileModule,并且 StaticFile 处理程序已映射到 StaticFileModule。
我使用示例图像创建了一个测试页面,但是当我浏览到它时,我收到“401 - 未经授权:由于凭据无效,访问被拒绝”。我过去使用过 IIS7,但我知道 IIS8 的权限已更改(使用 AppPoolIdentity 而不是网络服务),因此如果问题是权限或者我缺少其他内容,我不会这样做。
我使用相同的index.html示例图像创建了一个新站点,但出现了相同的 401 错误。我已经尝试过 Google,但网络上似乎还没有那么多关于 IIS8 的讨论。
编辑: 作为内部开发服务器,作为测试,我们将具有修改权限的每个人添加到 DNN 站点,现在它可以工作,所以看起来肯定是权限问题。仔细阅读 DNN 论坛建议将 AppPoolIdentity\AppPoolName 设置为“修改”,但这并没有奏效。我找不到太多其他信息,所以我现在的问题是我需要什么用户帐户的权限才能使 IIS8 和 DNN 很好地协同工作?
我已经设置了一个 S3 存储桶来托管我的静态站点。
现在我正在尝试将 CloudFlare 包装起来,但是在 CloudFlare 的 DNS 管理器中为根域添加 CNAME 条目时,我收到以下警告:
CNAME example.com example.com.s3-website-us-east-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
DNS 规范不允许根域 CNAME 记录。较旧的递归程序和邮件程序可能不遵循此 CNAME。如果您打算将此记录用作 MX 或 SRV 目标,您可能希望将此记录更改为 A 记录。
我发现的示例显示了使用子域的工作设置(即每个https://support.cloudflare.com/entries/22077268-How-do-I-use-CloudFlare-with-Amazon-s -S3-Service- ) 但我有兴趣完全从根域托管该站点。
现在一切似乎都可以正常工作...域是使用 Google Apps MX 记录设置的 - 我可以忽略来自 CloudFlare 的警告吗?如果能够将根域设置为 A 记录,我会感觉更舒服,但我不确定如何实现这一点。
domain-name-system amazon-s3 static-content cloudflare g-suite
我有以下 nginx 配置:
server {
listen 8080;
root /site_root/web;
index index.html;
server_name www.mysite.com;
location / {
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}
# add headers to static files
location ~* \.(?:ico|css|js|gif|jpe?g|png|svg|woff|ttf|eot)$ {
expires 365d;
add_header Pragma public;
add_header Cache-Control "public";
}
location ~ \.php {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS $https;
fastcgi_pass unix:/var/run/php-fpm-www.sock;
}
}
Run Code Online (Sandbox Code Playgroud)
问题 这是一个标准的 php 应用程序,带有前端控制器和一些静态资产(js/css 等)作为文件系统上的文件(为了参数,这些文件的位置是“/site_root/web/assets”)。
上述配置的目的是向这些静态文件添加“max-age”标头,以允许浏览器缓存它们。这适用于文件系统上存在的所有文件。但是我有一些动态生成的资产,需要通过 php …
当从不同的内容源构建我们的网页时,可能需要从外部服务器获取一些图像(例如,当合并 rss 提要时),这可能不像我们自己的数据中心那么快或连接得那么好。我希望有一种方法可以分别将代理文件复制到我们站点上运行的服务器地址中,以减轻外部服务器的负载,可能会更改文件名以隐藏图像是动态生成的事实。
例如打开以下网址
http://domain.de/content/query?file=foo/nr_1.gif
变成这样:
mydomain.net/static/domain.de/query_3fresource_3dfoo_2fnr_5f1.gif
这应该尊重 etags, if-modified-since change expires headers 以使文件静态和可缓存,无论原始服务器说什么。
我想我可以使用 varnish 和另一个 Web 服务器来构建这样的东西,但也许已经有一个解决方案可用。
这可能是 CDN 的一部分,但是我不认为真正的 CDN 有必要,因为我们没有很多来自其他国家的访问者
我正在开发一个需要每秒更新页面的 Web 应用程序。你可以想象一个有股票的网站,其中的数据必须实时更新。
对于这个实时更新,我使用了 jquery 插件 Ajax。我的数据库是带有 innoDB 表的 mysql,应用程序本身是用 php 编写的。
浏览器中的 Ajax 脚本每秒运行一次,这只是一次读取。要使用其他值更新数据库,有一个每分钟执行一次的 cronjob,它执行每秒运行一次的 php 脚本。此脚本执行读取和写入操作。
此外,用户进行读写操作。有很多事情正在发生。
现在我对这种大型应用程序还很陌生,有些术语让我很困惑,我不知道我的设置是否错误。
我现在的设置是这样的:
我有一个专用服务器,运行 centos 和 plesk 并行面板。服务器正在运行 apache,带有 php 和 mysql 数据库。
现在这里列出了让我感到困惑的事情。我已经阅读了这些条款,但我不明白它们的真正作用以及如何从中受益。
1)首先是lighttpd和ngingx。它们是像 apache 这样的 http 服务器,还是其他东西。如果它们是 http 服务器,它们是否容易从 apache 切换到。
2)什么是FastCGI和CGI。他们是喜欢 php,还是其他的东西。使用 PHP 有什么好处吗,它们是否易于切换。
3)我想知道的最后一件事是关于静态内容交付。如果我想从另一个域传送我的静态内容,我是否需要一个单独的服务器,或者我可以在 PLESK 中配置它。
对不起,所有菜鸟问题的家伙,但我真的很感激在这些主题上的一些帮助。
我目前的web项目有以下特点:
但是,我低估了在少量目录中保存大量文件对性能的影响。目前,网站的 URL 直接映射到文件系统上预先生成的目录结构。例如,地址domain.com/categoryA/...映射到webroot/pages/categoryA/...包含大量 HTML 页面的目录,并且随着添加到该目录中的每个附加文件,文件的读取变得越来越慢。
我怎么能解决这个问题?是否有任何网络服务器或服务器端技术专门解决服务大量静态页面的问题?应保留对 SEO 友好的 URL 结构。除此之外,我愿意接受任何建议。
web-server cache web-applications static-content static-files
我正在尝试通过 ssh 设置一个 linux 服务器(Ubuntu,对建议开放),我一直撞墙,谷歌搜索,向前移动一点,然后撞到另一堵墙,然后撞到像安装/mysql 这样的大墙/user 创建(一直以 root 身份运行很糟糕,对吧?)在某个地方搞砸了,感到沮丧,擦拭并重新开始。
我仍在考虑这个问题,但最终,我想要一个非常安全/轻巧/快速的服务器来在我的网站的根目录下托管静态 html(也许还有一个 Movable Type/Jekyll(静态)博客?):http:// wiswanson.com(无 www 哲学,目前使用 S3 和 cname)。我想我仍然想在 Amazon S3 上托管图像和文件(cdn.wiswanson.com cname?使用 mod_rewrite 重定向 /img 和 /files?什么更好,为什么?),也许最终将其移至 Amazon Cloud Front。理想情况下,这会以某种方式从 Dropbox 中提取并在将 html 移动到已发布文件夹时发布它。我对想法和建议非常开放。
是否有任何 ssh/ftp/server 设置教程或资源非常可靠且写得很好?这对服务器故障会更好吗?
我设置了一个微型实例(Ubuntu,32 位)并分配了一个弹性 IP(23.23.245.104)
公共 DNS:ec2-23-23-245-104.compute-1.amazonaws.com
我成功地通过 ssh 连接到机器并安装了 nginx。
然后我在 nginx 的配置文件(/etc/nginx/sites-available/default)中编辑了 server_name 属性
server_name ec2-23-23-245-104.compute-1.amazonaws.com;
Run Code Online (Sandbox Code Playgroud)
重新启动 nginx 并点击http://ec2-23-23-245-104.compute-1.amazonaws.com但出现“无法连接”错误。
我忘了做什么?
谢谢
static-content ×11
nginx ×4
amazon-s3 ×2
cache ×2
cloudflare ×2
amazon-ec2 ×1
cdn ×1
cloud ×1
dotnetnuke ×1
fastcgi ×1
ftp ×1
g-suite ×1
iis-8 ×1
lighttpd ×1
mirroring ×1
php ×1
redirect ×1
static-files ×1
varnish ×1
web-server ×1