Nginx 1.8 구성 문제

Nginx 1.8 구성 문제

문제는 다음과 같습니다. (저는 NGinx를 처음 접했지만 이에 대해 읽었지만 아직 작동하는 솔루션을 찾지 못했습니다.)

저는 Windows 시스템을 사용하고 있습니다.

내 프로젝트 파일 시스템은 다음 위치에 있습니다.

E:/www/

다음은 이 예에서 나중에 접근하려고 시도할 프로젝트 폴더입니다.

E:/www/projectTest

아파치 서버가 잘 돌아가고 있어요. Nginx 서버를 병렬로 설정하고 싶습니다. 이것이 바로 다른 포트를 사용하여 nginx를 구성한 이유입니다(아래 구성 파일 참조).

Nginx 파일은 다음과 같습니다.

E:/nginx/

거기에 PHP를 복사했습니다.

E:/nginx/php/

다음은 PHP 및 nginx 구성을 테스트하기 위해 현재 폴더에 배치한 'index.php' 예제입니다.

<?php
    echo "THIS IS A TEST";
?>

내 nginx.conf 파일은 다음과 같습니다(주석 처리된 줄을 제거했습니다).

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8111;
        server_name  localhost;
        root E:/nginx/;
        index index.php index.html index.htm;
        charset utf-8;  
        location / {
            alias E:/www/;
        }

        location /projectTest/ {
            alias E:/www/projectTest/;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ \.php$ {
            root ../www;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root/conf/$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

모든 것이 잘 돌아가고 있는 것 같습니다. 즉, 'localhost:8111/index.php' 또는 'localhost:8111/projectTest/index.php'에 도달하려고 하면 거기에 배치한 'index.php'를 얻게 되고 화면에 "THIS IS A TEST"라는 텍스트가 나타납니다.

하지만 :

내 페이지를 테스트하기 위해 Firebug를 열 때 항상 다음과 같은 오류 메시지가 나타납니다(내 페이지를 얻은 경우에도).

NetworkError: 404 Not Found - http://localhost:8111/
    //Same error when I call index.php in url : 
NetworkError: 404 Not Found - http://localhost:8111/index.php
    //Same error when I call my projectTest folder :
NetworkError: 404 Not Found - http://localhost:8111/projectTest/
    //Same error when I call my index.php in projectTest url : 
NetworkError: 404 Not Found - http://localhost:8111/projectTest/index.php

명령줄에서 Nginx를 시작하는 방법은 다음과 같습니다.

E:\nginx>nginx.exe
E:\nginx\php>php-cgi.exe -b 127.0.0.1:9000 -c e:/nginx/php/php.ini

php.ini에서 :

doc_root = "E:/www"
extension_dir = "E:/nginx/php/ext"
error_reporting = E_ALL

내 nginx 구성에 뭔가 문제가 있는 것 같습니다. 저는 Apache에서 왔기 때문에 이 .conf 파일과 정말 혼동스럽습니다. 이에 대한 많은 내용을 읽었지만 여전히 "루트" 또는 " alias" 값, 그리고 fast-cgi php 문제로...

읽어주셔서 감사합니다/도움/조언

답변1

구성에 몇 가지 문제가 있습니다.

  1. 서버 수준에서 지정한 root다음 블록 단위 alias로 지정합니다 location. 이는 그 자체로는 잘못된 것이 아니지만 쉽게 혼란을 야기합니다.

모든 프로젝트 파일이 아래에 있는 경우 E:/www이를 사용하여 블록이 location있는 블록을 모두 제거하고 블록 내부 alias에만 설정합니다 .root E:/wwwserver

  1. root처리 블록 내부에 지시문을 지정합니다 .php. 그건 작동하지 않습니다.

웹 서버에 대한 특별한 요구 사항이 없다면 PHP에 다음 설정을 사용하겠습니다.

location ~ \.php$ {
    try_files $uri =404;
    include /etc/nginx/fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

이 설정을 사용하면 nginx는 디렉터리에서 제공할 파일을 조회하고 E:/www실행을 위해 모든 PHP 파일을 PHP-FPM에 전달합니다.

관련 정보