2017-10-24 5 views
0

하이브리드 php/Rails 앱이 하나의 AWS ec2 서버에 있습니다. Mediawiki 설치를 호스팅하고 레일즈를 프론트 엔드로 사용하고 있습니다. Rails 앱의 경우 Passenger를 서버로 사용하고 있습니다. location /은 Rails 응용 프로그램을 제공하고 location /w 또는 Mediawiki (php5-fpm)가 제공하는 .php 파일을 제공하고 싶습니다.Nginx + Passenger 403 오류

이전에는 작동하는 구성을 사용 했었지만 함께 해킹되어 리팩토링하고 싶습니다.

/에서 Rails 앱에 액세스하려고하면 현재 작업 구현에서 403 Forbidden 오류가 발생합니다.

내가 (rails_error.log에서) 얻을 오류 : 나는 지금 /에서 레일 응용 프로그램에 액세스 할 수 있도록하고 싶습니다 2017/10/24 20:08:31 [error] 14947#14947: *2 directory index of "/var/www/myapp/public/" is forbidden, client: xx.yy.zz.aa, server: myapp.amazonaws.com, request: "GET/HTTP/1.1", host: "myapp.amazonaws.com"

; 나는 아직 php5-fpm 설정에 초점을 맞추지 않았다. 여기

내의 .conf 파일입니다

사이트-가능/myapp.conf :

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=mw_cache:10m max_size=10g inactive=60m use_temp_path=off; 
fastcgi_cache_key "$scheme$request_method$host$request_uri"; 

server { 
    listen 80; 
    listen [::]:80 ipv6only=on default_server; 

    server_name myapp.com; 
    charset utf-8; 

    location = /favicon.ico { access_log off; log_not_found off; } 
    location = /robots.txt { access_log off; log_not_found off; } 

    root /var/www/myapp/public; 
    passenger_enabled on; 

    location /w { 
     alias /var/www/mediawiki-1.28.0; 
     index index.php index.html index.htm; 
     charset utf-8; 

     try_files $uri $uri/ /index.php?$query_string; 
    } 

    location ~ \.php$ { 
     fastcgi_cache mw_cache; 
     fastcgi_cache_valid 200 60m; 
     try_files $uri /index.php =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass 127.0.0.1:7777; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include fastcgi_params; 

     error_log /var/log/nginx/mediawiki_error.log; 
     access_log /var/log/nginx/mediawiki_access.log; 
    } 

    error_log /var/log/nginx/rails_error.log; 
    access_log /var/log/nginx/rails_access.log; 
} 

nginx.conf :

user www-data;                                          
worker_processes 4;                                         
pid /run/nginx.pid;                                         

events {                                            
     worker_connections 768;                                      
     # multi_accept on;                                       
}                                              

http { 
     sendfile on;                                         
     tcp_nopush on;                                        
     tcp_nodelay on;                                        
     keepalive_timeout 65;                                       
     types_hash_max_size 2048;  

     include /etc/nginx/mime.types;                                    
     default_type application/octet-stream; 

     access_log /var/log/nginx/access.log; 
     error_log /var/log/nginx/error.log;   

     gzip on; 
     gzip_disable "msie6"; 

     passenger_root /home/ubuntu/.rvm/gems/[email protected]/gems/passenger-5.1.1; 
     passenger_ruby /home/ubuntu/.rvm/gems/[email protected]/wrappers/ruby; 

     include /etc/nginx/conf.d/*.conf; 
     include /etc/nginx/sites-enabled/*; 
} 

나는 함께 할 수있다 의심을 여객이 설치되거나 달리는 방법, 또는 제가 승객을 www-data으로하지 않고 ubuntu으로 운전할 수 있습니다.

/var/www/myapp/도 우분투 소유입니다. chown -R www-data /var/www/myappchown -R ubuntu:www-data /var/www/myapp을 사용해 보았습니다.

아무도 여기에서 어떤 포인터가 있습니까?

감사합니다.

답변

1

설정이 제대로 작동합니다. 적어도 Nginx를 루트로 시작하면 앱이 성공적으로 시작됩니다 (일반적으로 어떻게 수행되는지).

config의 지시어는 Nginx에게 작업자를 실행하는 사용자를 알려주며, Passenger 코어를 실행할 사용자를 지정하지 않습니다. 이는 Nginx가 시작된 것과 상속됩니다. 할

  1. 보통 우선 로그를 확인하는 것입니다 다음과 같이

    내 포인터가 될 것입니다. config가 로그 파일을 선언하지만 최상위 오류 로그를 설정하지 않으므로 Passenger 로그 출력이 누락됩니다.

    이 문제를 해결하려면 nginx.conf에서 error_log /var/log/nginx/error.log;http { 행 위로 이동하십시오.

    passenger_log_level 7; (http 블록)을 설정하면 매우 자세한 로그를 얻을 수 있습니다.

  2. 로그 수준을 변경하고 결과를 관찰하면 쿼리하는 URL에서 사용중인 구성이 실제로 사용되고 있는지 확인할 수 있습니다.들어오는 요청을 볼 수 있습니다).

  3. 승객에게 몇 가지 문제 해결 도구가 있습니다. passenger-status은 성공적으로 실행 중인지 검사 할 수 있습니다. passenger_pre_start url을 선언하지 않았으므로 첫 번째 요청이 전달 될 때까지는 앱이 Passenger에 의해 시작되지 않습니다.

관련 문제