Nginx를 통해 실행되는 WordPress 사이트의 특정 디렉토리에서 정적 파일을 제공하는 방법


0

Nginx에서 WordPress 사이트를 실행 중입니다. 내 구성에는 다음과 같은 위치 블록이 있습니다.

location / {
    try_files $uri $uri/ /index.php?$args;
}

내가하고 싶은 것은 정적 컨텐츠로 가득 찬 특별한 디렉토리를 가지고 있다는 것입니다. URL이 정적 디렉토리의 파일과 일치하면 Wordpress 내용 대신 제공되기를 원합니다.

파일 이름을 미리 알 수 없습니다.

위치 블록을로 변경하려고했습니다.

location / {
    try_files /static/$uri /static/$uri/ $uri $uri/ /index.php?$args;
}

이것은 대부분 내가 원하는 것을 수행하지만 ( static아래의 디렉토리 인 한 $document_root) 방문자가 보는 URL을 다시 작성합니다. 가능하면 피하고 싶습니다. 예를 들어로 https://example.com/catalog.php리디렉션 하지 마십시오 https://example.com/static/catalog.php. Nginx가 방문자 모르게 정적 콘텐츠를 제공하기를 원합니다.


특히 명확하지 않았을 수도 있습니다.

내 WordPress 내용이 있으며 /srv/www/mysite/html내 Nginx 구성은 대략 다음과 같습니다.

server {
    root /srv/www/mysite/html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
}

/home/dave/static임의의 내용 이 들어있는 다른 폴더 가 있습니다. 라는 파일이 있다고 가정 해보십시오 catalog.html. 방문자가 방문 https://example.com/catalog.html하면 콘텐츠를 /home/dave/static/catalog.html제공 하고 싶습니다 . 일치하는 정적 파일이 없으면 WordPress 내용으로 대체하고 싶습니다.

그 동안 내가 시도한 다른 것이 있습니다.

server {
    root /srv/www/mysite/html;

    location / {
        root /home/dave/static;
        try_files $uri $uri/ @fallback;
    }
    location @fallback {
        try_files $uri $uri/ /index.php?$args;
    }
}

이 구성이 작동하지 않습니다. 정적 콘텐츠를 인식하지 못하고 WordPress 콘텐츠 만 제공합니다.


1
Nginx의 위치 설명을 사용하여 URL 모양에 따라 위치를 정의하십시오. 예를 들면 location /static { stuff here; }다음과 location / { stuff here; }
같습니다

@Kinnectus 방문자가 example.com/static/file로 이동해야합니까? 방문자가 example.com/file로 이동하기를 원하지만 정적 디렉토리의 컨텐츠가있는 경우이를 제공하기를 원합니다
Dave

당신은 몇 가지가 /잘못된 위치에들. 시도 :try_files /static$uri $uri $uri/ /index.php?$args;
리처드 스미스에게

@RichardSmith 감사합니다. 내 질문에 초기 슬래시를 포함하는 것을 잊었습니다. 구성에서 가져 왔습니다. 슬래시 이후 static가 잘못되었다는 것이 맞습니다 . 불행하게도이 설정은 방문자를 물리적으로 서비스를 제공하지 않고 / static 디렉토리로 물리적으로 리디렉션합니다.
Dave

1
분명히 location ~ \.php$블록이 있지만 static폴더 의 파일과 충돌 할 수있는 다른 정규식 위치가 있습니다 .
Richard Smith
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.