Nginx 1.8 配置问题

Nginx 1.8 配置问题

问题如下:(我是 NGinx 的新手,阅读过相关内容,但还没有找到可行的解决方案。)

我在Windows系统上。

我的项目文件系统位于那里:

E:/www/

这是我将在本例中稍后尝试访问的项目文件夹:

E:/www/projectTest

我有一个运行良好的 Apache 服务器。我想并行设置一个 Nginx 服务器,这就是我使用另一个端口配置 nginx 的原因(请参阅下面的配置文件)。

Nginx 文件在那里:

E:/nginx/

我复制了一个 php 文件到那里:

E:/nginx/php/

这是我放在当前文件夹中的示例“index.php”,用于测试我的 php 和 nginx 配置:

<?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 文件感到非常困惑,我阅读了很多相关内容,但我仍然对“root”或“alias”值以及 fast-cgi php 的东西感到不舒服...

感谢您的阅读/帮助/建议

答案1

您的配置中存在几个问题:

  1. root在服务器级别指定,然后aliaslocation块中指定。这本身并没有错,但很容易造成混乱。

如果您的所有项目文件都在下E:/www,我会使用这些文件删除带有块location的块,并且只在块内alias设置。root E:/wwwserver

  1. 您在处理块root内指定指令.php。这样不起作用。

如果您对 Web 服务器没有任何特殊要求,我会对 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 进行执行。

相关内容