Por que o Nginx servia arquivos corretamente a partir do diretório padrão, mas não do novo diretório?

1

Instalação

SO : CentOS 7.4

Servidor : Nginx 1.12.2

Pergunta: Minha instalação do nginx exibe arquivos sem problema no diretório padrão, /usr/share/nginx/html . Infelizmente recebo um erro 403 quando uso uma nova pasta que criei, /www/html . O que devo procurar?

Minhas permissões são idênticas para ambas as pastas, embora o proprietário seja diferente.

Pasta padrão original

drwxr-xr-x. 13 root root 155 Jan 8 09:25 usr

Nova pasta padrão

drwxr-xr-x. 3 first first 18 Jan 15 10:45 www

Estou usando o arquivo nginx.conf abaixo e ele funciona corretamente.

events {}

http {

    server {
        listen       80;
        server_name  mydomain.com;
        root         /usr/share/nginx/html;
    }

}

No entanto, quando eu altero nginx.conf para usar este diretório /www/html , recebo um erro 403.

Obrigado por qualquer ajuda antecipadamente! Eu sou um noob e não tenho certeza onde procurar além das permissões de arquivo.

UPDATE

O SELinux está ativado no modo de execução.

[first@centos-2gb-sfo1-01 log]$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

2a ATUALIZAÇÃO Atualizei nginx.conf para incluir um log de erros.

events {}

http {

    server {
        listen       80;
        server_name  projournal.com;
        root         /www/html;
        error_log    /var/log/nginx.error.log;
    }

}

nginx.error.log foi criado no diretório correto, mas depois de vários erros 403 ele ainda estava em branco.

    
por DR01D 15.01.2018 / 19:43

1 resposta

3

Com a aplicação do SELinux, o acesso ao httpd será negado a / www / html, pois os arquivos não terão o contexto correto.

matchpathcon /www/html
/www/html       system_u:object_r:default_t:s0

Se você realmente quiser usar / www / html, então você pode adicionar um contexto de caminho apropriado ao banco de dados

semanage fcontext -a -t "httpd_sys_content_t" /www/html(/.*)?

Existem, no entanto, vários locais padrão que podem ser usados e que já possuem o contexto correto já definido, por exemplo, / var / www / html, / srv / www etc.

Como você criou / srv / www, você precisa definir inicialmente o contexto do SELinux após o qual (normalmente) qualquer novo arquivo e diretório terá o contexto correto.

restorecon -v /srv/www

Vai 'consertar' / srv / www. Você ainda já preencheu / srv / www, então você precisará definir os contextos de arquivo para a árvore inteira

restorecon -Rv /srv/www
    
por 16.01.2018 / 08:22

Tags