
저는 CentOS 7에서 Nginx를 사용하고 있습니다. 특정 확장자로 끝나거나 URL에 "/image/" 문자열이 포함된 파일에 대한 캐시 제어 헤더를 추가하고 싶습니다. 나는 이것을 시도했다
location / {
proxy_pass http://scale; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if ($request_uri ~* ".(ico|gif|jpe?g|png)$") | ($request_uri ~* "/image/") {
expires 60d;
access_log off;
add_header Pragma public;
add_header Cache-Control "public";
break;
}
}
하지만 서버를 다시 시작하면
invalid condition "$request_uri" in /etc/nginx/conf.d/scale.conf:16
오류. 문제가 있는 줄에서 " | ($request_uri ~* "/image/")"를 제거하면 모두 정상적으로 다시 시작되지만 원하는 항목을 일치시킬 수 없습니다. 구성 파일에 적절한 or 문을 어떻게 작성합니까?
답변1
nginx에서는만약에 악하다. 하지만 정말로 그렇게 하고 싶다면 다음과 같이 하세요.
if ($request_uri ~* "($\/image\/.*)|(.*\.(ico|gif|jpe?g|png)$)") {
기본적으로 정규식을 결합하면 됩니다.