문제는 다음과 같습니다. (저는 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
구성에 몇 가지 문제가 있습니다.
- 서버 수준에서 지정한
root
다음 블록 단위alias
로 지정합니다location
. 이는 그 자체로는 잘못된 것이 아니지만 쉽게 혼란을 야기합니다.
모든 프로젝트 파일이 아래에 있는 경우 E:/www
이를 사용하여 블록이 location
있는 블록을 모두 제거하고 블록 내부 alias
에만 설정합니다 .root E:/www
server
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에 전달합니다.