2013-07-18 7 views
4

Я следую за Railscast http://railscasts.com/episodes/293-nginx-unicorn?view=asciicast о создании Nginx и Unicorn на Vagrant с одним важным отличием. Райан делает свое приложение с Rails 3 (у которого есть default /public/index.html, который Rails 4 генерирует только динамически). После того, как установлена ​​Nginx и работает, мы смогли увидеть страницу по умолчанию на порту 8080. Затем мы создали основной конфигурационный файл для Nginx, чтобы поместить в каталоге конфигурации приложения рельсовnginx 403 запрещенная ошибка в Rails 4 (без файла index.html)

/config/nginx.conf

server { 
listen 80 default; 
# server_name example.com; 
root /vagrant/public; 
} 

, а затем удаляются страницы по умолчанию в местах включен и слинкован в файле конфигурации

[email protected]:/etc/nginx/sites-enabled$ sudo rm default 
[email protected]:/etc/nginx/sites-enabled$ sudo ln -s /vagrant/config/nginx.conf todo 

После этого, Райан перезапуске Nginx и смог увидеть индексную страницу Rails на localh ОСТ: 8080. Однако, когда я посещаю localhost: 8080, я получаю ошибку 403 Forbidden.

403 Forbidden 
nginx/1.1.19 

Update

поскольку Rails 4 не имеет общественности/index.html файл больше, я думаю, что ошибка 403 может быть вызвано тем, что, как я узнал из этого блога http://www.nginxtips.com/403-forbidden-nginx/. Он говорит, чтобы установить autoindex в on (по умолчанию отключено) в конфиге, но я не уверен, как настроить его, чтобы показать главную страницу Rails.

Когда я сделал это

server { 
listen 80 default; 

root /vagrant/public; 
location/{ 
       autoindex on; 
     } 
} 

он избавился от ошибки 403 разрешений (яй!), Однако, это не показывает домашнюю страницу по умолчанию Rails. Скорее это показывает структуру каталогов, поэтому мне интересно, какой правильный способ ее установить. enter image description here

Если я попытаюсь установить его в местоположение/публикацию, я снова получаю ошибку 403. Есть идеи?

location /public { 
        autoindex on; 
      } 

Update

Поскольку я использую Vagrant (Virtual Box), приложение в/бродяга, однако установка места на место/бродяга также приводит к 403 ошибке

location /vagrant { 
       autoindex on; 
     } 
+0

У каждого есть исправление? Я могу воспроизвести все это! –

ответ

2

Вам нужно будет передать запрос от 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_pass URL. По умолчанию единорог будет прослушивать 127.0.0.1:8080, но если вы его изменили, вам нужно будет указать этот порт.

Смежные вопросы