위치 지시어가 작동하지 않습니다

위치 지시어가 작동하지 않습니다

내 NGINX 서버의 경우 정적 콘텐츠를 처리하기 위해 가상 서버를 설정했습니다. 지금은 이미지에 만료 날짜가 있도록 설정하려고 합니다. 그러나 이에 대한 위치 지시문을 만들면 모든 결과가 404가 됩니다.

지금 내 구성은 다음과 같습니다.

/srv/www/static.conf

server {
    listen                          80;
    server_name                     static.*.*;

    location / {
            root                    /srv/www/static;
            deny                    all;
    }

    location /images {
            expires                 1y;
            log_not_found           off;
            root                    /srv/www/static/images;
    }
}

이 파일은 http 지시문 내부의 /etc/nginx/nginx.conf에 포함되어 있습니다.

이미지에 액세스하려고 하는데, 예를 들어... static.example.com/images/screenshots/something.png. 물론 이미지는 에도 존재합니다 /srv/www/static/images/screenshots/something.png. 하지만 해당 주소로 이동해도 작동하지 않고 단순히 나에게만 알려줍니다.404 찾을 수 없음.

그러나 제거 location /images하고 location /다음과 같이 변경하면 ...

location / {
    root /srv/www/static;
}

효과가있다! 내가 여기서 뭘 잘못하고 있는 걸까?

답변1

귀하의 구성은 nginx 구성을 따릅니다.함정nginx를 구성하기 전에 읽어야 합니다.

귀하의 질문에 대답하려면 root위치를 정의해서는 안 되며, 한 번만 정의하면 위치 태그를 통해 자동으로 특정 디렉터리에 대한 액세스 권한을 할당할 수 있습니다.

또한 이미지 디렉토리에 대한 사용자 정의 루트를 정의하는 대신 try_files. 은 (는) 디렉토리를 $uri매핑합니다 ./images//static/images/

다음 구성을 시도해 보세요.

server {
    listen                          80;
    server_name                     static.*.*;
    root                            /srv/www;

    location /static/ {
            deny                    all;
    }

    location /images/ {
            expires                 1y;
            log_not_found           off;
            autoindex               off;
            try_files $uri static/images$uri;
    }
}

관련 정보