
내 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;
}
}