미니톡포럼

미니톡을 이용하는데 있어 의견이나 궁금한점이 있다면 미니톡포럼을 이용하여 보세요.

문의게시판

문의사항이 있다면 누구나 자유롭게 질문하고 답변할 수 있습니다.

Qnginx rewirte 설정 관련

정보를 찾아보고 있는데 제대로 된 정보가 없어서 답답하네요.호스팅어 VPS에 우분투20.04 LTS 엔진엑스 환경에 그누보드+나리야 사용합니다.


루트는 /var/www/domain 이고 rewrite 설정도 제대로 따라서 해줬는데 자꾸 인스톨 페이지에서

  •  사용중인 웹서버의 rewrite 설정을 확인할 수 없습니다. 매뉴얼을 참고하여 rewrite 설정을 완료하여 주십시오.

라고 뜨니까 미치고 팔짝 뛰겠네요.

nginx -t 로 했을 때 오류는 없고 경로도 제대로 지정을 해줬는데 뭐가 문제일까요?

domain.com/minitalk/process/check 했을때는 success : true 가 정상적으로 출력됩니다.


server {

    listen 80;

    listen [::]:80;

    server_name www.domain.com domain.com;

    root /var/www/domain;


    index index.php ;

    include snippets/gnuboard-rewrite.conf;


//미니톡

  location /minitalk {

    if (!-e $request_filename) {

      rewrite /admin/([^\/]+)/?$ /minitalk/admin/index.php?menu=$1 last;

    }

   

    rewrite /api/index.php$ /minitalk/api/index.php?$query_string last;

    rewrite /api/([^\/]+)$ /minitalk/api/index.php?api=$1&idx=$2&$query_string last;

    rewrite /api/([^\/]+)/?([^\/]+)?$ /minitalk/api/index.php?api=$1&idx=$2&$query_string last;

    rewrite /process/([^\/]+)$ /minitalk/process/index.php?action=$1&$query_string last;

    rewrite /process/([^\/]+)/?(.*?)?$ /minitalk/process/index.php?action=$1&extras=$2&$query_string last;

  }

    

  location ~* \.(eot|otf|ttf|woff|woff2)$ {

    add_header Access-Control-Allow-Origin *;

  }

//미니톡


    location ~ \.(gif|jpg|png)$ {

        add_header Vary "Accept-Encoding";

        add_header Cache-Control "public, no-transform, max-age=31536000";

    }

    location ~* \.(css|js)$ {

        add_header Cache-Control "public, max-age=604800";

        log_not_found off;

        access_log off;

    }

    location ~*.(mp4|ogg|ogv|svg|svgz|eot|otf|woff|woff2|ttf|rss|atom|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|cur)$ {

        add_header Cache-Control "max-age=31536000";

        access_log off;

    }

    charset utf-8;

    server_tokens off;

    client_max_body_size 100M;

    location / {

        try_files $uri $uri/ =404;

    }

    location ~ /\.ht {

        deny all;

    }

    location ~ \.php$ {

         include snippets/fastcgi-php.conf;

         fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

         include fastcgi_params;

    }

}

채팅머신
LV.1

A 답변

Rewrite 체크가 HTTP 요청을 통해 확인됩니다.

실제로 Rewrite 설정이 제대로 되었더라도, 웹서버에서 CURL 을 통해 domain.com/minitalk/process/check 에 접근했을때 응답이 없다면 확인할 수 없다는 메시지가 나올 수 있습니다.

웹서버 설정이나 리눅스의 /etc/hosts 등에서 아이피가 강제로 할당되어 있는 경우 등 원인이 다양할 수 있습니다.


브라우저에서 domain.com/minitalk/process/check 로 접근했을때 정상적으로 접근이 되신다면

미니톡 클라이언트 폴더/classes/functions.php 파일을 확인하시면


CheckDependency() 함수가 있습니다.


해당 함수에서


} elseif ($dependency == 'rewrite') {

    $check->installed = false;

    

    $request = IsHttps() == true ? 'https://' : 'http://';

    $request.= $_SERVER['HTTP_HOST'];

    $request.= array_shift(explode('/install',$_SERVER['REQUEST_URI']));

    $request.= $version;

    

    $ch = curl_init();

    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);

    curl_setopt($ch,CURLOPT_URL,$request);

    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

    curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);

    $data = curl_exec($ch);

    $http_code = curl_getinfo($ch,CURLINFO_HTTP_CODE);

    curl_close($ch);

    

    if ($http_code == 200) {

        $result = json_decode($data);

        if ($result != null && isset($result->success) == true && $result->success == true) {

            $check->installed = true;

        }

    }

} else {


부분을


} elseif ($dependency == 'rewrite') {

    $check->installed = true;

} else {


으로 수정하여 rewrite 확인여부 를 우회하실 수 있습니다.

알쯔
LV.16
채팅머신
오 되네요 감사합니다