web-dev-qa-db-ja.com

Nginxがシンボリックリンクをたどらない

Ubuntu 12.04にnginxをインストールしました。ただし、nginxはシンボリックリンクをたどらないようです。これには設定の変更が必要であることを理解していますが、変更する場所を見つけることができません。任意の助けに感謝します。

36
Neo

nginx docs の次の設定オプションをご覧ください。

構文:

disable_symlinks off;
disable_symlinks on |
if_not_owner [from=part];

デフォルト:disable_symlinks off;

コンテキスト:http、サーバー、場所

このディレクティブはバージョン1.1.15で登場しました。

31
cobaco

私の場合、nginxはすでにシンボリックリンクをたどるように設定されています。しかし、問題は、ユーザーnginxがホームファイルにアクセスできなかったため、ホームディレクトリへのシンボリックリンクが機能していなかったことです。

シンボリックリンク/usr/share/nginx/www/mylink-> /home/u/htmlがあるとします

cd /usr/share/nginx/www
mkdir   -p  /home/u/html
Sudo ln -sv /home/u/html mylink  # creates mylink -> /home/u/html

許可を与える

を使用してreadおよびexecuteパーミッションを付与しますchmod および find

chmod +rx /home/u
chmod +rw /home/u/html
find /home/u/html/php -type d -exec chmod +rx {} +
find /home/u/html/php -type d -exec chmod +w  {} +  # optional

注:

  1. パーミッションxの名前はexecuteです。しかし、ディレクトリに適用されると、この許可によりディレクトリツリーの再帰が許可されます( Unixモード を参照)。

  2. コマンドfind ... -exec chmod ...は、アクセス許可を再帰的に変更します。コマンドchmod -R +rx /home/myuser/htmlを使用することもできますが、この最後のコマンドはすべての通常ファイルに実行許可を与えるため、これは望ましくありません。オプション-type dは、ディレクトリのみに対してchmodを実行します。

  3. 最後のオプションのコマンドは、write permissionを指定します。PHPスクリプトがデータの書き込みを必要とする場合。セキュリティ上の理由から、書き込み権限を必要なディレクトリのみに制限してください。

テスト

ngnixを再起動する必要はありません。 Ctrl+F5 ブラウザで。

注意:読み取り/書き込みアクセスの誤りまたは間違ったシンボリックリンクがデジタルを公開する可能性があるため、ホームディレクトリを指すシンボリックリンクを作成することはお勧めしませんデータ...

リファレンス:Arch wiki onnginx

30
olibre

olibreの答えがファイル/ etc/nginx/sites-available/defaultの編集に役立たず、サーバーのルートディレクトリを指定した場所にこの行を追加した場合。

autoindex on;

ファイルを保存してサーバーを再起動します

/etc/init.d/nginx restart
4
Asgher Hussain