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
도움이 될 수 있습니다).
제가 생각하는 가장 가능성 있는 결과는 다음 두 가지입니다.
chmod
명령이 괜찮아 보이지만 권한이 잘못 설정되었습니다.- SELinux에는 여러분의 삶을 더 좋게 만들 수 있는 몇 가지 사항이 있습니다.
답변2
chmod 777 /var/www/your_site
문제를 해결했다