2012-07-27 1 views
6

別のフォルダからファイルを読み込むためにnginxを設定するための助けが必要です。ここに私の設定です:別のフォルダからtry_filesをロードするようにnginxを設定するにはどうすればよいですか?

index index.php; 

server { 
    server_name domain.com; 
    root /www/domain.com/www/; 

    location/{ 
      try_files $uri $uri/ /php_www/index.php; 
    } 

    location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_pass 127.0.0.1:9000; 
      fastcgi_index /php_www/index.php; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      fastcgi_param PATH_INFO $fastcgi_script_name; 
      include /etc/nginx/fastcgi_params; 
    } 

    error_page 404 /404.html; 

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

} 

問題は、/ php_www /はnginxで定義されたルートの中にありません。

私はここに、私がこれを行うために必要な4つの異なるフォルダを持っているが、私のフォルダ構造は次のようになります。私は何をしようとしている

/www/domain.com/www/ 
/www/domain.com/php_www/ 
/www/domain.com/content1/ 
/www/domain.com/content2/ 

私がしたい訪問者がdomain.com/page1/content1/に行くときですたとえば、content1フォルダからコンテンツをロードします。この理由は、別のリポジトリを持ついくつかのgitプロジェクトを持っているからです...これにより、他の何も影響を与えずに、ウェブサイトの特定の領域をプロダクションにプッシュできるようになります。私はすべてのファイル/コンテンツが/ wwwフォルダにアクセスできないようにしたいので、URLはコンテンツを探すために攻撃されることはありません。

これはうまくいけばうまくいきます。 (thisコメントから引き出さ)

作業溶液

location ^~/{ 
    root /www/domain.com/php_www/; 
    try_files $uri $uri/ /index.php; 
    location ~* \.(?:php|html)$ { 
     try_files $uri =404; 
     fastcgi_pass 127.0.0.1:9000; 
     include /etc/nginx/fastcgi_params; 
    } 
} 

答えて

8

あなたがlocationrootディレクティブを使用することができます。

+0

私がそれをテストしたとき、サーバの設定セクションに 'root'指示文がなければ、設定はうまくいかなかったでしょう。だから私が言うことから、あなたは 'location /'を混乱させることはできません。 – tvpmb

+0

この設定は最終的にはうまくいきました: 場所^〜/ { root /www/domain.com/php_www/; try_files $ uri $ uri /index.php; 場所〜* \。(?: php | html)$ { try_files $ uri = 404; fastcgi_pass 127.0.0.1:9000; には/ etc/nginx/fastcgi_paramsが含まれています。 } } – tvpmb

関連する問題