NginX 관련 질문 하나 드리겠습니다.

   조회 4348   추천 0    

아파치 환경에서 NginX 환경으로 이전을 하는 중인데요

1. 퍼머링크가 www.사이트명.com/news/로 생성되어 있는데요  "/홈디렉토리/news/" 와 같이 실제로 디렉토리가 존재하고 있습니다.

2. 현재 정적 페이지들이 "/홈디렉토리/" 에 있구요
워드 프레스가 "/홈디렉토리/wp/" 밑에 존재하고 있습니다

3. 워드프레스에서 퍼머링크를 생성했습니다.
그런데 기존의 아파치에서는 실제 디렉토리가 존재하더라도 퍼머링크의 주소를 참조하여 보여주는 데
NginX는 실제 디렉토리와 퍼머링크 주소가 중복되면 실제 디렉토리를 띄워줍니다.


4. 워드 프레스의 퍼머링크 관련 셋팅은 아래와 같이 해주었구요

try_files $uri $uri/ /index.php?$args;

이렇게 했을 때 다른 퍼머링크는 문제 없이 작동되고 있는데요
디렉토리명이 중복되는 것만 위에와 같은 문제가 발생하고 있습니다.


5. 퍼머링크의 이름을 변경하거나 실제 디렉토리의 이름을 변경하면 문제 없이 작동이 됩니다.

디렉토리명을 변경하면 되지만 디렉토리의 수와 정적파일에 하드코딩된 참조주소가 너무 많아서
디렉토리명을 변경하는 것은 불가능합니다.

구글에 검색을 해봐도 퍼머링크에 대한 셋팅은 "try_files $uri $uri/ /index.php?$args;" 가 거의 전부여서 저런 예외상황에 대한 내용이 너무 없네요..ㅜ.ㅠ

짧은글 일수록 신중하게.
빈경윤 2016-08
try_files $uri $uri/ /index.php?$args;
->
try_files 는 $uri $uri/ 에 해당하는 파일/디렉토리가 존재하지 않을 경우에만, index.php?$args 로 rewrite 합니다.

따라서 디렉토리 존재 여부를 체크하지 않으려면, 아래처럼 모든 주소에 대해 rewrte 하면 됩니다.
rewrite ^(.*)$ /index.php?$args break;

그러나 js, img 파일까지 index.php 로 rewrite 하면 안될테니,
다음처럼 '파일이 존재하지 않을 경우만 모두 rewrite' 하면 되지 않을까요?

        if (!-f $request_filename){
                rewrite ^(.*)$ /index.php?$args break;
        }
     
지니보이 2016-08
경윤님

답변 감사합니다.
덕분에 index.php형태로 걸려 있는 것은 해결을 했습니다.

추가로 질문 드려도 될까요?
위에 제가 말씀 드린 형태로
www.사이트명.com/news/로 퍼머링크가 걸려 있구요
그 아래 있는 파일들도 마찬가지로 퍼머링크가 걸려 있습니다.
그래서 www.사이트명.com/news/messege.php 로 링크가 걸려 있는 것을 클릭하면
실제 news 디렉토리에는 파일이 존재하지 않고 퍼머링크 걸린 곳에 존재하기때문에 찾지 못하고 404에러를 냅니다.

이런 경우 어떻게 해야 하나요?
          
빈경윤 2016-08
이건 location 지시자가 어떻게 구성되어 있는지 등 여러가지 변수가 있을 것 같습니다.
               
지니보이 2016-08
음....어렵군요...

이렇게 된 이유중에는 워드 프레스의 플러그인중에 커스텀 퍼머링크라는 것을 사용하고 있는것이 문제인데요
이 플러그인이 아파치에서는 문제없이 동작하던 것인데 NginX로 오면서 제대로 작동을 안한다는 것이죠

이 플러그인은 "홈디렉토리/wp/wp-content/theme/테마명/" 의 아래에 관련 파일들을 넣어놓으면
퍼머링크를 생성하여 그 파일로 연결해주는 역할을 하는 것입니다.
그래서 퍼머링크를 디렉토리뿐 아니라 파일까지 다 걸어놓은 모양입니다.

현재 사이트를 이전하는 것이 요구사항인지라
사이트의 내용을 수정한다던가 하는 것은 어려운 실정입니다.

설사 한다고 해도 사이트 파일들이 너무 복잡하게 얽혀 있어 수정하려면 꽤 큰 공수가 들거 같습니다.
정적 파일이 800개를 넘어가고 있고 거기에 더해서 워드프레스에 쓰여진 플러그인도 꽤 많이 있는터라
전체 파일 용량이 4.5기가를 넘고 있습니다.

뭔가 뾰족한 묘수가 없을까요.....ㅜ.ㅠ
                    
빈경윤 2016-08
그럼 nginx 단이 아닌 '커스텀 퍼머링크'라는 플러그인과 관련된 호환성 이슈일 가능성도 배제하긴 어려운데요.

404 에러가 nginx 에서 나오는 것인지, '커스텀 퍼머링크'에서 나오는 것인지 분석해봐야 하니깐요.

이 경우 문제 해결 비용이 너무 커질 것 같으면, 차라리 apache 로 바꾸는 것이 효율적일 수 도 있겠네요.


QnA
제목Page 1936/5714
2015-12   1721896   백메가
2014-05   5188793   정은준1
2013-12   4349   BJH
2016-07   4349   김준유
2017-09   4349   무국
2019-10   4349   sffbig
2015-05   4349   공간사랑
2017-03   4349   심사숙고
2015-04   4349   김지환1
2016-04   4349   임진욱
2016-01   4349   refreshair
2020-03   4349   박중석
2014-03   4349   Q군
2015-04   4349   이규민
2019-02   4349   여주농민76
2018-07   4349   꿈꾸는베빈야
2016-08   4349   지니보이
2014-11   4349   전직P연구원
2020-06   4349   병따개님
2022-01   4349   우당탕탕
2014-04   4350   송지만
2018-01   4350   iwill