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

   조회 4417   추천 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 2292/5731
2015-12   1792927   백메가
2014-05   5267917   정은준1
2016-07   4398   초보IT
2015-05   4975   겨울나무
2018-10   8325   하셀호프
2011-10   8620   최원시익
2011-10   6054   하루카
2014-02   10277   병맛폰
2018-10   4222   정의석
2024-05   2432   구차니
2014-02   4514   Nikon
2018-10   4188   xRan
2011-11   6261   아름다운노을
2011-11   6749   윤승철
2014-02   3533   나우마크
2019-12   3024   다큐
2021-03   7347   perls
2015-06   3734   agegold
2024-07   1802   신은왜
2018-10   3517   행복하세
2019-12   6719   Frinc
2022-11   4486   CharlieJadeK