2013-07-18 2 views
4

방글라데시에서 Nginx 및 Unicorn을 설정하는 Railscast http://railscasts.com/episodes/293-nginx-unicorn?view=asciicast과 함께 한 가지 중요한 차이점이 있습니다. Ryan이 Rails 3 (Rails 4가 동적으로 생성하는 기본 /public/index.html을 가짐)을 사용하여 응용 프로그램을 만들고 있습니다. Nginx를 설치하고 실행 한 후에는 포트 8080에서 기본 페이지를 볼 수있었습니다. Nginx가 레일스 응용 프로그램의 config 디렉토리에 넣을 기본 설정 파일을 만들었습니다.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를 다시 시작 구성 파일에 심볼릭 링크와 localh에서 레일 인덱스 페이지를 볼 수 있었다 ost : 8080. 그러나 localhost : 8080을 방문하면 403 Forbidden 오류가 발생합니다. 레일 4/대중 index.html을 더 이상 파일이 없기 때문에

403 Forbidden 
nginx/1.1.19 

업데이트

, 나는이 블로그 게시물 http://www.nginxtips.com/403-forbidden-nginx/에서 배운대로 403 오류가, 그에 의해 발생할 수 있습니다 생각합니다. config에서 autoindex를 on (기본값은 off)으로 설정하고 있지만 Rails 홈페이지를 표시하도록 설정하는 방법은 잘 모르겠습니다.

나는 그것이 403 권한 오류를 제거있어이

server { 
listen 80 default; 

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

을했을 때 (야호!) 그러나,이 기본 레일 홈 페이지를 보여주는 아니에요. 오히려 그것은 디렉토리 구조를 보여 주므로 나는 그것을 설정하는 적절한 방법이 무엇인지 궁금합니다. enter image description here

위치/공용으로 설정하려고하면 403 오류가 다시 발생합니다. 어떤 아이디어?

location /public { 
        autoindex on; 
      } 

업데이트

나는 방랑 (가상 상자)를 사용하고 있기 때문에이 앱이 그러나 위치로 위치를 설정/방랑에/방랑은 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에서 수신 대기하지만 변경 한 경우 해당 포트를 지정해야합니다.