babee 发表于 2016-3-28 17:12:26

LNMPA,居然默认用nginx打开php文件,而将html转给apache打开

服务器装好LNMPA 1.2后,只是把默认的网站根目录修改了一下,顺便修改了日志文件的名称,然后就发生了如此诡异的事情。本来应该是用nginx来打开html文件,将php文件转给apache去处理,结果恰恰相反。
nginx.conf文件只把server部分贴过来吧,如下:
server
    {
      listen 80;
      server_name localhost;
      index index.html index.htm;
      root/home/wwwroot;

      include proxy-pass-php.conf;

      location /nginx_status
      {
            stub_status on;
            access_log   off;
      }

      location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
      {
            expires      30d;
      }

      location ~ .*\.(js|css)?$
      {
            expires      12h;
      }

      location ~ /\.
      {
            deny all;
      }

      access_log/home/wwwlogs/nginx_access.logaccess;
    }

[ 本帖最后由 babee 于 2016-3-28 17:13 编辑 ]

licess 发表于 2016-3-28 19:32:04

这个配置文件没有错误信息

你都修改了什么文件?

babee 发表于 2016-3-28 21:04:31

谢谢军哥回复。
我把网站的根目录由原来的/home/wwwroot/default变成了/home/wwwroot,因此,修改了nginx.conf和httpd.conf,还有apache/conf/extra/httpd-vhosts.conf的root部分。
今天下午在调试的时候,我把nginx.conf中“include proxy-pass-php.conf”注释掉,nginx就能处理html文件了,log文件里状态值是200,否则就是304
另外,httpd-vhosts.conf里的这两句话:
#php_admin_value open_basedir "/home/wwwroot:/tmp/:/var/tmp/:/proc/"
DocumentRoot "/home/wwwroot"


上面的那句“php_admin_value”前的注释要不要去掉?不过,事实已经证明,去不去的效果是一样的。

[ 本帖最后由 babee 于 2016-3-28 21:08 编辑 ]

babee 发表于 2016-3-28 21:29:27

在执行p.php的时候,看到编译引擎是apache,端口是80,不应该是88吗?


另,所说的.user.ini为啥哪儿也找不到呢?

babee 发表于 2016-3-28 22:14:23

每次一访问html文件,在apache的error_log文件中总会出现以下四条记录:

AH00173: SIGHUP received.Attempting to restart
AH01873: Init: Session Cache is not configured
AH02282: No slotmem from mod_heartmonitor
AH00163: Apache/2.4.12 (Unix) OpenSSL/1.0.1e-fips PHP/5.6.9 configured -- resuming normal operations
AH00094: Command line: '/usr/local/apache/bin/httpd'



无论访问html还是php文件,Nginx的access.log中会出现这样的记录:
106.113.167.138 - - "GET /index.html HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" -
106.113.167.138 - - "GET /index.php HTTP/1.1" 200 55 "-" "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" -

注意html后面的304和php后面的200。

licess 发表于 2016-3-29 09:26:43

.user.ini 只有在lnmp下有
304是缓存过的文件,是正常代码

这是反代过去的,显示80,因为是反代过去的nginx上肯定也会有日志

include proxy-pass-php.conf注释掉php就无法解析了

babee 发表于 2016-3-29 09:36:32

可能是没有说清楚。
我装的是LNMPA,而且nginx.conf中index的顺序也是index.html index.html index.php,按说默认的首页应该是index.html啊,可是直接访问IP地址,显示的默认首页却是index.php。我故意测试了一个不存在的html页面,如下图,显示的404错误页中也是Apache,为什么不是Nginx呢?

babee 发表于 2016-3-29 09:41:47

原帖由 licess 于 2016-3-29 09:26 发表 https://bbs.vpser.net/images/common/back.gif
.user.ini 只有在lnmp下有
304是缓存过的文件,是正常代码

这是反代过去的,显示80,因为是反代过去的nginx上肯定也会有日志

include proxy-pass-php.conf注释掉php就无法解析了 ...
我知道注释掉include proxy-pass-php.conf就无法解析php文件了,我只是测试了一下。如果不注释掉这句,那访问IP的默认首页是index.php,注释掉它,默认首页就是index.html。昨天晚上奋战到凌晨一点多了,怎么搞都不行。难道就因为我把网站的根目录由default改为wwwroot?

babee 发表于 2016-3-29 10:35:18

搞定了。
原来我把httpd.conf和httpd-vhosts.conf里的DirectoryIndex都只写了index.php,所以访问ip后默认首页就成了index.php了。现在在前面加上index.html,默认首页变成了index.html。
但是,问题来了,我的nginx.conf的index后面写的是index.html index.html index.php啊,不是说让nginx来解析html吗,而且访问ip时,端口也是80啊。这点我有些想不太明白。

licess 发表于 2016-3-29 11:48:36

回复 8# 的帖子

伪静态和静态都是html或类似结尾
nginx是没法区分你访问的这个html是伪静态还是静态html文件,所以要先去try_files一下,如果存在这个文件就直接nginx处理,否则抛给apache,所以是apache显示404

index顺序的话就是nginx中的默认设置就是先index.html

前面我已经说了try_files了,端口80 6楼上说过了是反代的
具体你可以看一下日志记录,正常默认情况下 纯静态文件肯定只有nginx上有日志记录,伪静态的话肯定nginx、apache上都有
页: [1]
查看完整版本: LNMPA,居然默认用nginx打开php文件,而将html转给apache打开