nginx.conf가 /websites에서 제공되도록 설정된 경우 Nginx 403 오류

nginx.conf가 /websites에서 제공되도록 설정된 경우 Nginx 403 오류

websites해당 디렉토리 /에 폴더를 만들고 전체 권한을 부여했습니다 sudo chmod -R 777 /websites/.

/etc/nginx/conf.d/default.conf그 후 해당 디렉토리를 가리키 도록 변경했습니다 websites.

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /websites;
        index  index.html index.htm;
    }


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /websites/nginx/html;
    }

}

403 Forbidden하지만 서버의 공개 IP를 검색하려고 하면 .

왜 이런 일이 발생합니까? 어떻게 해결할 수 있나요?

nginx error.log에 다음이 있습니다.

2017/08/27 20:41:03 [error] 3849#3849: *37 "/websites/index.html" is
forbidden (13: Permission denied), client: **.**.130.159, server:
localhost, request: "GET / HTTP/1.1", host: "**.**.**.120"

답변1

오류 로그에는 다음과 같이 매우 명확하게 나와 있습니다.

  • nginx는 읽으려고 시도 /websites/index.html하지만 읽을 수 없습니다.
  • 그렇기 때문에 구성 때문이 아니라 403 오류가 발생하는 것입니다.

바로 13: Permission denied시스템 오류이기 때문입니다. 따라서 nginx가 제대로 구성되어 있고 파일을 읽으려고 시도하지만 읽을 수 없습니다.

다음 질문은 왜 안 되느냐입니다. 먼저, 그것이 무엇을 하는지 확인해야 합니다. nginx(아마도 www-data이므로 명령은 : )를 실행하는 사용자에게 Sudo를 실행 sudo -u www-data /bin/bash하고 파일을 직접 읽어 보십시오( cat /websites/index.html).

다음 단계는 결과에 따라 달라집니다.

@sebasth의 의견이 정확합니다.

파일/폴더에 대한 권한이 잘못되었거나 SELinux 정책이 액세스를 허용하지 않을 수 있습니다. SELinux를 활성화한 경우 감사 로그(예:audit2why도움이 될 수 있습니다).

제가 생각하는 가장 가능성 있는 결과는 다음 두 가지입니다.

  1. chmod명령이 괜찮아 보이지만 권한이 잘못 설정되었습니다.
  2. SELinux에는 여러분의 삶을 더 좋게 만들 수 있는 몇 가지 사항이 있습니다.

답변2

chmod 777 /var/www/your_site 

문제를 해결했다

관련 정보