

初めまして。初投稿です。

VPSで動かしているCentOS7のnginx(1.14.0)に関して403が返ってきてその原因が分からずにいます。  
ドキュメントルートをデフォルトの"/usr/share/nginx/html"にした場合は確かに"Welcome!"のページが表示されるのですが、ドキュメントルートを"/usr/share/nginx/www"に変更すると403で拒否されてしまいます。  
両ディレクトリとも中身は空(から)です。

ls -l /usr/share/nginx/

[code]

    drwxr-xr-x. 2 root root 38  5月 15 23:06 html
    drwxr-xr-x. 2 root root  6  5月 16 01:29 www
    
[/code]

ls -Z /usr/share/nginx/

[code]

    drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
    drwxr-xr-x. root root unconfined_u:object_r:usr_t:s0   www
    
[/code]

getenforce

[code]

    Permissive
    
[/code]

confファイルでの変更箇所は/etc/nginx/conf.d/default.confのドキュメントルートの部分のみです。phpの設定などは全く行なっていません。デフォルトのままコメントアウトしています。  
また"sudo nginx -t"でも異常はありません。

どうか問題の解決にご助力をお願いします。


CC BY-SA 4.0
2018-05-15T17:29:15.593
44010
2018-05-16T12:07:36.407
2018-05-16T12:07:36.407
3060
28535
question
centos nginx selinux
nginxでドキュメントルートを変更した後の403の解決方法がわからない


質問に"ls -Z /usr/share/nginx/"コマンドを実行した結果が以下のように示されています。

> drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html  
>  drwxr-xr-x. root root unconfined_u:object_r:usr_t:s0 www

これから判ることは、  
１）
htmlディレクトリには"httpd_sys_content_t"というSELinuxコンテキストが付けられているのでwebサーバ(httpd)からアクセスできる。  
２）
wwwディレクトリには"httpd_sys_content_t"というSELinuxコンテキストが付けられていないのでwebサーバ(httpd)からアクセスできない。  
という設定になっているという事です。

これがWebサーバでアクセスしたときにディレクトリの下のファイルが表示されるか、403エラーで拒否されるかの違いを生んでいます。

＝対策＝  
「"httpd_sys_content_t"というSELinuxコンテキストが付けられていない」ことを解消すれば問題は解決します。  
具体的には "chcon"コマンドを使って、SELinuxコンテキストを変更します。  
（詳細はchconのヘルプなどを参照してください）


CC BY-SA 4.0
2018-05-16T02:15:41.790
44012
2018-05-16T02:15:41.790
217
44010
answer


`index` で指定したファイル(index.html など)を置くか、`autoindex on;` を設定するといいと思います。


CC BY-SA 4.0
2018-05-16T12:01:46.673
44021
2018-05-16T12:01:46.673
4603
44010
answer