Configuración de archivos estáticos de Nginx para la instalación mínima de CenotOS 7

Configuración de archivos estáticos de Nginx para la instalación mínima de CenotOS 7

Tengo una máquina virtual nueva con instalación mínima de CenotOS 7.

Lo que quiero que suceda es configurar Nginx para que sirva archivos estáticos desde un directorio en localhost:80.

Mi directorio es /home/kenny/projects/kcrypt/dist/.

Aquí están los contenidos de mi /etc/nginx/nginx.conf:

# this is set to root in order to rule out
# any permission related issues.
user root;    

worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    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;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        root         /home/kenny/projects/kcrypt/dist/;
        index index.html;

        location / {
        }
    }
}

cuando ejecuto curl http://localhostme sale esta respuesta:

<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.12.2</center>
</body>
</html>

He intentado otorgar todo tipo de permisos a cualquier directorio que se me ocurra.

Al final configuré Nginx para que se ejecutara como root.

Ya reinstalé el sistema operativo varias veces y no puedo hacerlo funcionar.

PD

Esto es lo que encontré en/var/log/nginx/error.log

2018/02/27 21:33:19 [error] 15689#0: *1 open() "/home/kenny/projects/kcrypt/dist/index.html" failed (13: Permission denied), client: ::1, server: , request: "GET / HTTP/1.1", host: "localhost"
2018/02/27 21:33:35 [error] 15690#0: *2 open() "/home/kenny/projects/kcrypt/dist/index.html" failed (13: Permission denied), client: 127.0.0.1, server: , request: "GET / HTTP/1.1", host: "127.0.0.1"
2018/02/27 21:33:38 [error] 15690#0: *3 open() "/home/kenny/projects/kcrypt/dist/index.html" failed (13: Permission denied), client: ::1, server: , request: "GET / HTTP/1.1", host: "localhost"

No consigo lo que quiere... Le he dado todos los permisos que puedo.

Esto es lo que tengo en el directorio raíz:

[root@vm3 dist]# ll
total 368K
drwxrwxrwx. 2 root root   98 Feb 26 23:16 .
drwxrwxrwx. 6 root root  234 Feb 27 21:26 ..
-rwxrwxrwx. 1 root root 1.2K Feb 26 23:16 favicon.ico
-rwxrwxrwx. 1 root root 1.7K Feb 26 23:16 index.html
-rwxrwxrwx. 1 root root 175K Feb 26 22:53 index.js
-rwxrwxrwx. 1 root root  297 Feb 26 23:16 manifest.json
-rwxrwxrwx. 1 root root 179K Feb 26 22:53 styles.css

PD 2

Intenté poner mis archivos estáticos en /var/www/kcrypt/dist/, pero sin resultado.

Sigo recibiendo los mismos mensajes de error:

2018/02/27 23:18:11 [error] 16157#0: *1 open() "/var/www/kcrypt/dist/index.html" failed (13: Permission denied), client: ::1, server: , request: "GET / HTTP/1.1", host: "localhost"
2018/02/27 23:20:58 [error] 16535#0: *1 open() "/var/www/kcrypt/dist/index.html" failed (13: Permission denied), client: ::1, server: , request: "GET / HTTP/1.1", host: "localhost"
2018/02/27 23:21:30 [error] 16564#0: *1 open() "/var/www/kcrypt/dist/index.html" failed (13: Permission denied), client: ::1, server: , request: "GET / HTTP/1.1", host: "localhost"

Respuesta1

Su sistema tiene SELinux habilitado. De forma predeterminada, SELinux no permite que el servidor web lea archivos en los directorios personales de los usuarios. Los directorios habilitados para el servicio web son /var/www(donde los paquetes del sistema colocan los archivos) y /srv/www(donde se espera que los usuarios coloquen los archivos en producción).

Si necesita servir archivos desde directorios de inicio, puede configurar el booleano SELinux httpd_read_user_content, que permitirá leer estos archivos.

setsebool -P httpd_read_user_content 1

Tenga en cuenta que SELinux nunca permitirá que el servidor webescribiren los directorios de inicio de los usuarios. Si necesita esto, deberá colocar su contenido web en otro lugar yhacer que los directorios apropiados sean escribibles.


También tenga en cuenta que SELinux funcionaademás depermisos regulares de UNIX, por lo que los archivos y directorios relevantes también deben tener la propiedad y los permisos adecuados, cualesquiera que sean para su caso de uso específico.

información relacionada