Ruby on rails nginx 403 Rails 4中禁止的错误(没有index.html文件)
我正在跟随一位铁路专家关于在流浪者上设置Nginx和Unicorn,有一个重要的区别。Ryan正在使用Rails 3制作他的应用程序(Rails 4只动态生成默认的/public/index.html)。安装并运行Nginx后,我们可以在端口8080上看到默认页面。然后,我们为Nginx创建了一个基本配置文件,将其放入rails应用程序的config目录中 /config/nginx.confRuby on rails nginx 403 Rails 4中禁止的错误(没有index.html文件),ruby-on-rails,nginx,vagrant,Ruby On Rails,Nginx,Vagrant,我正在跟随一位铁路专家关于在流浪者上设置Nginx和Unicorn,有一个重要的区别。Ryan正在使用Rails 3制作他的应用程序(Rails 4只动态生成默认的/public/index.html)。安装并运行Nginx后,我们可以在端口8080上看到默认页面。然后,我们为Nginx创建了一个基本配置文件,将其放入rails应用程序的config目录中 /config/nginx.conf server { listen 80 default; # server_name example
server {
listen 80 default;
# server_name example.com;
root /vagrant/public;
}
然后删除“已启用站点”中的默认页面,并将其符号链接到配置文件
vagrant@lucid32:/etc/nginx/sites-enabled$ sudo rm default
vagrant@lucid32:/etc/nginx/sites-enabled$ sudo ln -s /vagrant/config/nginx.conf todo
在此之后,Ryan重新启动了nginx,并能够在localhost:8080上看到Rails索引页面。然而,当我访问localhost:8080时,我得到一个403禁止的错误
403 Forbidden
nginx/1.1.19
更新
由于Rails 4不再具有public/index.html文件,我认为403错误可能是由该文件引起的,正如我从这篇博文中了解到的
. 它说在配置中将autoindex设置为on
(默认设置为off),但我不确定如何设置它以显示Rails主页
当我这么做的时候
server {
listen 80 default;
root /vagrant/public;
location / {
autoindex on;
}
}
它消除了403权限错误(耶!),但是,它没有显示默认的Rails主页。相反,它显示的是目录结构,所以我想知道设置它的正确方法是什么
如果我尝试将其设置为location/public,则会再次出现403错误。有什么想法吗
location /public {
autoindex on;
}
更新
因为我使用的是Vagrant(虚拟框),所以应用程序位于/Vagrant中,但是将location设置为location/Vagrant也会导致403错误
location /vagrant {
autoindex on;
}
您需要将请求从Nginx传递给Unicorn。您可以这样做:
server {
listen *:80;
root /vagrant/public;
location / {
# Serve static files if they exist, if not pass the request to rails
try_files $uri $uri/index.html $uri.html @rails;
}
location @rails {
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8080;
}
}
您可能需要更改
proxy\u pass
url。默认情况下,unicorn将在127.0.0.1:8080上侦听,但是,如果您更改了该端口,则需要指定该端口。每个端口都有一个修复程序?我可以复制这一切!