【问题标题】:Forbidden message when serving a sinatra local site using nginx passenger使用 nginx 乘客为 sinatra 本地站点提供服务时出现禁止消息
【发布时间】:2010-08-23 07:50:20
【问题描述】:

我已按照在 ubuntu 中使用 nginx 安装 phusion 乘客的说明进行操作。我在安装时遇到了一些问题,因为我使用 rvm 并且我必须以 root 身份安装并且安装程序无法找到 rake,所以我暂时将 /opt 更改为由我的用户拥有,并且在安装后我将所有权重置为 root。我可以看到 nginx 欢迎页面,但是当我尝试访问 sinatra 应用程序时,我被禁止,虚拟主机指向 sinatra 应用程序公共目录,整个应用程序的权限为 777。

【问题讨论】:

  • nginx 是以什么用户身份运行的?
  • 自从我使用 sudo /etc/init.d/nginx 启动 nginx 后,我假设为 root 但我没有在 nginx 配置中指定用户

标签: nginx sinatra passenger


【解决方案1】:

试用Passenger 3。它会自动检测大多数权限问题并告诉您如何解决这些问题。

【讨论】:

    【解决方案2】:

    如果这是用于生产系统,那么您真的不需要 RVM 的灵活性,因为您应该使用一个稳定版本的 Ruby 和 Rails for Phusion。安装您需要的版本,如果该版本可用,请使用 Aptitude,然后完成。

    【讨论】:

    • 这是一台本地机器。我想要 nginx 和乘客一起开发。
    • 明白。与直接从 ruby​​ 或使用 rackup 运行 sinatra Web 应用程序相比,这对您有什么好处?
    • 嗯,该应用程序始终可用,如果您运行多个应用程序,您不必使用不同的端口,只是更方便。
    【解决方案3】:

    因为这是谷歌为我的问题带来的页面,这不是乘客问题,而是 Nginx 反向代理问题,您需要添加该行

    disable :protection
    

    在您的 sinatra 应用程序中的某个位置。我在最后有我的,在任何方法之外(在全局范围内)。

    【讨论】:

    • 为了解决反对意见,是的,这是愚蠢且不安全的黑客解决方案,但这应该从代码中非常明显,特别是“禁用”和“保护”部分。但是对于任何想知道为什么将 Sinatra 升级到更新版本会破坏它的人来说,这是因为早期版本一开始就没有这种默认保护。
    【解决方案4】:

    好吧,我的错误是没有使用 rvmsudo 来安装带有乘客的 nginx,此处的说明:http://rvm.io/integration/passenger/

    【讨论】:

      猜你喜欢
      • 2015-10-19
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 2012-11-20
      • 2013-06-01
      • 2012-06-09
      • 2019-06-24
      • 2014-01-13
      相关资源
      最近更新 更多