要在部署期间显示维护页面,我总是在nginx中使用下一个配置:
if (-f /home/shared/system/maintenance.html) {
return 503;
}
error_page 503 @maintenance;
location @maintenance {
root /home/shared/errors;
rewrite ^(.*)$ /maintenance.html break;
}
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到我需要将静态内容添加到维护页面(图像,样式表等)
在error.log中,静态内容的数量不适用于此类日志:
2011/05/05 02:47:20 [notice] 13760#0: *6 "^(.*)$" matches "/some.jpg", client: x.x.x.x, server: server.com, request: "GET /some.jpg HTTP/1.1", host: "server.com"
2011/05/05 02:47:20 [notice] 13760#0: *6 rewritten data: "/maintenance.html", args: "", client: x.x.x.x, server: server.com, request: "GET /some.jpg 2 HTTP/1.1", host: "server.com"
Run Code Online (Sandbox Code Playgroud)
这是合乎逻辑的 - 如果我将所有内容重写为maintenance.html,则意味着静态内容不会被排除.
但我找不到任何适当的解决方案来重定向到每个文件,除了那些实际存在于root /home/shared/errors文件夹中的文件.
PS./home/shared/errors不与公共项目文件夹共享任何资源 - 这是完全独立的文件夹(即使没有/current项目的任何符号链接).
在带有HAML(3.1.4)的rails 3.0中,我有
一些类似模板的部分,如_template.html.haml:
.panel.top
= yield :panel_top
.content
= yield
Run Code Online (Sandbox Code Playgroud)另一个部分将使用prev模板显示(所有这些东西都是使用AJAX渲染的,但这没关系)
- content_for :panel_top do
.title.left
= title
content text
Run Code Online (Sandbox Code Playgroud)这就像Rails 3.0中的魅力一样
但是,升级到3.2后这个失败了!Yiels只是产生"内容文本",所以我有两次"内容文本",根本没有标题
只有改变= yield :panel_top以= content_for :panel_top作品为3.2
我不确定这个解决方案是否正常,如果它是稳定的或推荐的,我找不到任何关于yield处理和Rails 3.1发行说明中的变化的注释,也没有找到3.2中的注释.
你能帮助组织yield内部部分的最佳方法吗?
在我的prod服务器上,我Missing template有时会得到例外.
设置是带有CentOS5,ruby 1.9.2,Rails 3.2.1,8个nginx实例,6个瘦实例的VPN
所以,这发生在两个主要观点,很少发生,约.每1000次请求1次,但确实如此
据我所知,瘦接收请求只是处理真正的异常,但我无法理解为什么,因为1000其他请求的999是好的,他们一定是好的.
这是文件系统问题吗?还是来自机器人的地方?
异常示例在这里:
From: Exception Notifier <myhost>
Subject: [myhost Exception] controllername#actionname (ActionView::MissingTemplate) "Missing
template controllername/actionname, application/actionname with {:locale=>[...
Mime-Version: 1.0
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Gm-Message-State: ALoCoQn4St5gK1z...
A ActionView::MissingTemplate occurred in controllername#actionname:
Missing template controllername/actionname, application/actionname with {:locale=3D>[:en], :fo=
rmats=3D>[:html], :handlers=3D>[:erb, :builder, :coffee, :haml]}. Searche=
d in:
* "/..mypath../releases/20120205001108/app/views"
actionpack (3.2.1) lib/action_view/path_set.rb:58:in `find'
-------------------------------
Request:
-------------------------------
* URL : http://myhost/actionurl
* IP address: 74.208.8.48
* Parameters: {"utf8"=3D>"=E2=9C=93", "authenticity_token"=3D>"Ffkm6Bd8=
wi3+Got7uTeLhzj86hJNDpFYRjG4Yrqx4yQ=3D", "video_link"=3D>"", "controller"=
=3D>"controllername", …Run Code Online (Sandbox Code Playgroud) 我有一个带有负载均衡器的GKE服务,但是我想在其他服务内部使用它,例如,我不想将公共IP分配给它
如果没有专用VPN并忙于防火墙设置,是否可能?
所有其他负载平衡(如kube-dns)功能都可以正常工作,并且对于Container Engine中的服务,不需要公共IP
所有节点都位于相同的区域和区域中,因此我不需要也不必关心多区域功能