nginx - 如何在域中创建没有应用程序名称的 rails 应用程序

nginx - how to create rails app without app name in domain

我正在将 nginx 与 passenger 一起使用,我想问一下如何创建 rails 应用程序,而不在域中显示应用程序名称。 目前我知道如何使用这样的域设置 nginx 配置:

domain.com/app_name

并且在我创建 root 'welcome#index' 时在路由文件中 我仍然需要输入 domain.com/app_name 来查看我的控制器,但是当域只是 domain.com

时如何让它显示欢迎控制器

我的 nginx 配置看起来是这样的:

server {
  listen 80 default_server;
  server_name domain.com;
  root /home/username/rails;

    location ~ ^/app_name(/.*|$) {
      alias /home/username/rails/app_name/public;  # <-- be sure to point to 'p$
      passenger_base_uri /app_name;
      passenger_app_root /home/username/rails/app_name;
      passenger_document_root /home/username/rails/app_name/public;
      passenger_app_env development;
      passenger_enabled on;
    }
}

当我尝试注释掉 #passenger_base_uri /app_name 时,我得到了 403 错误代码。 任何帮助将不胜感激。

您需要删除 location 块,aliaspassenger_base_uripassenger_app_rootpassenger_document_root。也将 root 更改为您的 Rails public 目录。它应该是这样的:

server {
  listen 80 default_server;
  server_name domain.com;
  root /home/username/rails/app_name/public;

  passenger_app_env development;
  passenger_enabled on;
}

尝试遵循此生产 nginx 配置示例,其中还包括一些配置服务器的最佳实践:https://gist.github.com/mikhailov/711913