답변:
더 많은 파일 확장자 외에도 더 완벽한 캐시 헤더를 선호합니다. '?' 접두사는 '비 캡쳐'마크이며 nginx는 $ 1을 만들지 않습니다. 불필요한 부하를 줄이는 데 도움이됩니다.
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
root
수 있습니다.이 경우 해당 블록에 지시문을 추가해야합니다. (이것은 2 년 늦었지만 미래의 시민을위한
허용되는 답변으로 인해 파일이 더 이상 표시되지 않는 이유에 대해 언급 할만한 평판이 충분하지 않지만 알아 낸 후 도와 드리겠습니다.
짧은 버전 :
전역 디렉토리 세트가없는 경우 이미지에서 위치 블록에 대해 지정된 루트 디렉토리가 있는지 확인하십시오!
아래 긴 버전 :
우선,이 솔루션을 구현하는 방법은 실제로이 답변 과 비슷 합니다. 허용 된 답변에서와 같이 규칙을 작성하십시오.
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
img-cache.conf 파일로
그런 다음 해당 파일을 server {...}
지시문에 포함시킵니다.
내 사이트 사용 가능 폴더에있는 somesite.com의 예 :
#Image Caching
include /etc/nginx/conf/img-cache.conf;
이렇게하면 실행중인 여러 사이트에 이미지 캐싱 위치 블록을 추가 할 수 있습니다.
둘째, 내 / var / www /에 public_html로 허용되는 두 개의 폴더 (보안 및 교육)가 포함되어있는 상황이 발생하므로 사이트의 서버 지시문에서 특정 폴더를 지정하여 특정 위치 블록을 만들어야합니다.
따라서 전역 루트 디렉토리가 설정되어 있지 않습니다 .
따라서 이미지 위치 블록을 만들 때 이미지 를 찾을 루트 디렉토리 를 제공하지 않을 수 있습니다 !
내 솔루션은 다음과 같습니다.
location ~ ^/training.+\.(?:ico|css|js|gif|jpe?g|png)$ {
root /var/www/;
expires 7d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri 404;
}
location ~ ^/.+\.(?:ico|css|js|gif|jpe?g|png)$ {
root /var/www/secure;
expires 7d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri 404;
}
.conf
. 에 해당 폴더가 nginx/1.14.0 (Ubuntu)
될 것으로 보인다 /etc/nginx/snippets/
.
만료를 최대로 설정할 수도 있습니다. 다음은 CSS와 js에 사용하는 지시문입니다.
# Set css and js to expire in a very long time
location ~* ^.+\.(css|js)$ {
access_log off;
expires max;
}
위에서 언급 한 모든 솔루션은 다른 경로에 대해 다른 별칭을 가질 가능성을 거부합니다. 또한 한곳에서 모든 다른 캐시 만료를 위해 다음과 같은 방식으로 nginx 맵을 사용해야합니다.
...
# Expires mappings
map $sent_http_content_type $expires {
default off;
text/html epoch;
text/css max;
application/javascript 7d;
~image/ max;
}
...
server {
listen ...;
expires $expires;
location /assets/ {
# It is now possible to serve some resources from different path
alias /var/www/my_other_path/
}
# and have them all have same expirations
location / {
try_files $uri $uri/ /index.html;
}
...
}
Off
캐싱을 비활성화하고 epoch
(유닉스 시대의 경우) 항상 리소스를 다시 가져 오며 max
날짜를 브라우저 최대 값으로 설정합니다.
~ image /는 모든 이미지 유형과 일치합니다.
nginx 맵에 대한 자세한 내용은 http://nginx.org/en/docs/http/ngx_http_map_module.html 에서 확인 하십시오 .
$sent_http_content_type
입니다 "text/css;charset=UTF-8"
위의 표현은 실패합니다.
모든 정적 파일이있는 곳이 있으면 다음과 같이됩니다.
location /static {
your/location/to/static/files/static;
expires 30d;
add_header Cache-Control "public";
}
수락 된 답변으로 인해 nginx가 내 정적 파일을 찾지 못했습니다. 왜 그런지 잘 모르겠지만 이것은 간단한 대안입니다.
/static
별명 끝에 ( .../files
예에서 바로 뒤에) 폴더 (위치에 설정 한 것) 를 추가했는지 확인하십시오 .
이것은 매우 오래된 스레드이므로 최신 놀라운 자습서를 찾았습니다.
아마도 당신은 그것을 확인하고 싶어