2016-11-28 3 views
0

우분투, php5.6, nGinx를 서버에 설치했고 웹 사이트에 몇 개의 프로젝트를 배치했습니다. 나는 디렉토리 아래에 배포해야하는 하나 개의 프로젝트는 CodeIgniter를 개발하고 다음과 같이 내가 Nginx에 구성을 구성했습니다우분투, nGinx 및 codeigniter에서 URL 재 작성을 활성화하는 방법은 무엇입니까?

location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ { 
       expires max; 
       log_not_found off; 
     } 

     location/{ 
       # Check if a file or directory index file exists, else route it to index.php. 
       try_files $uri $uri/ /index.php; 
     } 

     location ~* \.php$ { 
       fastcgi_pass unix:/run/php/php5.6-fpm.sock; 
       include fastcgi.conf; 
       fastcgi_split_path_info ^(.+\.php)(.*)$; 
       include fastcgi_params; 
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     } 
     # deny access to .htaccess files, if Apache's document root 
     # concurs with nginx's one 
     # 
     location ~ /\.ht { 
       deny all; 
     } 

URL은 지금 (404) 말을하지 않습니다하지만 이후 내 사이트의 홈 페이지를 보여주고있다 URL 재 작성. 이 문제를 어떻게 해결할 수 있습니까?

+0

소켓을 구성 했습니까? – edlee

+0

귀하의 질문을 이해할 수 있는지 잘 모르겠습니다. 소켓을 올바르게 구성 했습니까? PHP 정보 페이지에 연결할 수 있습니까? 하위 디렉토리 또는 Codeignite 사이트에서 작동하지 않는 것은 무엇입니까? – edlee

답변

0

사실, 문제가 해결되었습니다. 문제는 fastcgi_param을 변경하는 것이었고 정상적으로 작동했습니다. 감사합니다 @edlee

location /6 { 
       alias /var/www/html/6/; 
       try_files $uri $uri/ /6/index.php; 
     } 



     location ~* \.php$ { 
       fastcgi_pass unix:/run/php/php5.6-fpm.sock; 
       root /var/www/html/; 
       try_files $uri =404; 
       fastcgi_index index.php; 
       fastcgi_param SCRIPT_FILENAME $request_filename; 
       include fastcgi_params; 
       fastcgi_buffer_size 128k; 
       fastcgi_buffers 256 4k; 
       fastcgi_busy_buffers_size 256k; 
       fastcgi_temp_file_write_size 256k; 
     } 
1

귀하의 질문을 정확하게 이해 한 경우.

한 가지 방법은 웹 디렉토리의 루트를 통해 PHP를 전역 적으로 실행하는 것입니다. 일단 실행하면 각 위치에서 허용 할 파일을 지정할 수 있습니다. 따라서 PHP를 하위 디렉토리로 분리해야하는 경우 디렉토리에 허용 된 파일을 변경할 수 있습니다. 하위 디렉토리와

index index.html index.htm 

예 Nginx에의 설정 :

server { 
    listen 80; 
    server_name mysite.com www.mysite.com; 

    root /path/to/your/website.com/; 

    index index.html index.htm 

    error_log log/error.log; 

    # set expiration of assets to MAX for caching 
    location ~* .(ico|css|js|gif|jpe?g|png)(?[0-9]+)?$ { 
     expires max; 
     log_not_found off; 
    } 

    # main codeigniter rewrite rule or sub-directory 

    location /codeigniter { 
     alias /path/to/your/website.com/codeigniter/; 
     try_files $uri $uri/ /index.php; 
    } 

    # php parsing 
    location ~ .php$ { 
     root   /path/to/your/website.com/; 
     try_files $uri =404; 
     fastcgi_pass unix:/tmp/php5-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include  fastcgi_params; 
     fastcgi_buffer_size 128k; 
     fastcgi_buffers 256 4k; 
     fastcgi_busy_buffers_size 256k; 
     fastcgi_temp_file_write_size 256k; 
    } 
} 

은 내가 CodeIgniter의 사용자가 아닌, 그래서 나는 PHP의 설정을 공유 할 수 없습니다. 그러나 위치는 하위 디렉토리에 대해 지정해야합니다. 이 Stack 게시판은이를 수행하는 방법을 보여줍니다. here.

또 다른 방법은 PHP를 하위 디렉토리로 분리하는 것입니다. 위의 유사 만이 줄

# php parsing 
location ~ /codeigniter/.+\.php$ 

이 게시물이 approach에 대한 전체 예제가 변경합니다.

+0

Thanks @edlee 실제로 사이트는 이미 잘 작동하지만 codeigniter 사이트는 아닙니다. 로그인 할 때 도메인의 루트 페이지가 표시됩니다. 예. example.com/123/ 로그인 후 url은 example.com/123/login/dashboard/이되지만 example.com/ – vishgarg

+0

의 내용을 보여줍니다. 구성을 시도했지만 여전히 동일한 내용을 얻고 있습니다. – vishgarg

+0

N.P. 명확하게하기 위해 로그인 후에 웹 디렉토리의 루트로 리디렉션됩니까? 따라서 example.com/을 example.com/123/으로 변경 하시겠습니까? – edlee

관련 문제