ローカルマシンのUbuntu 12.04にnginx 1.1.19をインストールし、ユーザーディレクティブを変更する以外はデフォルトの/etc/nginx/nginx.conf
を保持しました。
/etc/nginx/nginx.conf
user nginx www-data;
worker_processes 4;
pid /var/run/nginx.pid;
...
ユーザーディレクトリのWebルートで簡単な静的サイトを機能させたい(ユーザー名が 'ubuntu'だとしましょう)。これが私のテストサイトの設定です。
/ etc/nginx/sites-available/test-site
server {
#listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
root /home;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
}
これで明らかにすべてのファイルがWebルートに配置されるため、これを実際のサーバーに配置しませんが、これは私のポイントを示しています。 /home/index.html(ubuntuユーザーフォルダー内ではない)に単純なWebページを作成すると、http://localhost/
にあるページにアクセスできます
これはうまくいきます。次に、ユーザールートごとにWebルートをINSIDEに置きます。/etc/nginx/sites-available/test-siteで、ルートディレクティブを `root/home/ubuntu ;.に変更します。 test-siteへのシンボリックリンクを再作成し、/ home/index.htmlを/home/ubuntu/index.htmlに移動して、nginxサーバーを停止して起動します。今、403 Forbiddenエラーが出ます。
私の最初の疑いは、これが許可の問題だったということです。ただし、ls -al index.html
を実行すると、
-rw-r--r-- 1 nginx www-data 183 Aug 12 13:13 index.html
どっちがいい? chmod 777 /home/ubuntu/index.htmlを実行して、権限が
-rwxrwxrwx 1 nginx www-data 183 Aug 12 13:13 index.html
助けにならない。 /etc/init.d/nginx configtest
でもエラーは発生せず、/etc/
のシンボリックリンクは確かです。
だから私はここに数時間滞在していて、自分のユーザーディレクトリの中で何がサービスを提供できないほど特別なのでしょうか? Ubuntuは最近、ホームディレクトリを暗号化しますか?それが問題でしょうか? EC2 Ubuntu 12.04インスタンスでもこの問題が発生します(ユーザーディレクトリがそこで暗号化されているかどうかわかりません)
したがって、Ubuntu 12.04のユーザーホームディレクトリのデフォルトの権限は700のようです。nginxには、提供するファイルの読み取り権限と、ルートから提供されるファイルへのパスに沿った各親ディレクトリの実行権限が必要です。
次のコマンドを実行すると、ユーザーディレクトリにこれらの権限を付与できます。
chmod 701 user_home
また、多くのシステムのホームディレクトリのデフォルトの権限設定である755を使用することもできます。
Nginxが実行されているユーザー/グループ(nginx.confで定義されている)が、提供されるすべてのファイルに対する読み取り権限を持っている限り、Webルートのディレクトリ/ファイルは、www-dataユーザーまたは通常の個人ユーザーに属することができます。すべてのWebルートディレクトリに対する実行権限。
私は自分のWebルートのすべてのディレクトリを自分のユーザーアカウントが所有するように設定し、権限755を設定しました。また、Webルートから提供されるすべてのファイルを私のマシンのデフォルトであるため、権限664を設定しました。
Ex. drwxr-x--x becomes 751.
最初の文字を無視します(ディレクトリの場合はd、ファイルの場合は-など)。残りの9文字は、非ダッシュ文字が1でダッシュが0である2成分のトリプレットを形成します。
So drwxr-x--x becomes rwxr-x--x
becomes 111 101 001
which is converted to a decimal 751
権限を扱っていたときに、これについて復習が必要でした。