小编Wil*_* E.的帖子

包含内容问题的nginx维护页面

要在部署期间显示维护页面,我总是在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项目的任何符号链接).

maintenance nginx

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

partial_for vs partials中的yield

在带有HAML(3.1.4)的rails 3.0中,我有

  1. 一些类似模板的部分,如_template.html.haml:

    .panel.top
      = yield :panel_top
    
    .content
      = yield
    
    Run Code Online (Sandbox Code Playgroud)
  2. 另一个部分将使用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内部部分的最佳方法吗?

haml ruby-on-rails ruby-on-rails-3

9
推荐指数
1
解决办法
3485
查看次数

Thin很少引发丢失的模板异常

在我的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)

production ruby-on-rails nginx thin

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

没有公共IP的GKE负载均衡服务

我有一个带有负载均衡器的GKE服务,但是我想在其他服务内部使用它,例如,我不想将公共IP分配给它

如果没有专用VPN并忙于防火墙设置,是否可能?

所有其他负载平衡(如kube-dns)功能都可以正常工作,并且对于Container Engine中的服务,不需要公共IP

所有节点都位于相同的区域和区域中,因此我不需要也不必关心多区域功能

kubernetes google-kubernetes-engine

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