VPS侦探论坛

 找回密码
 注册
查看: 5851|回复: 9

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

[复制链接]
发表于 2016-3-28 17:12:26 | 显示全部楼层 |阅读模式

服务器装好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.log  access;
    }

[ 本帖最后由 babee 于 2016-3-28 17:13 编辑 ]
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2016-3-28 19:32:04 | 显示全部楼层


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

你都修改了什么文件?
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 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 编辑 ]
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2016-3-28 21:29:27 | 显示全部楼层



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


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 2016-3-28 22:14:23 | 显示全部楼层

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

[Mon Mar 28 21:58:43.575408 2016] [mpm_prefork:notice] [pid 7615] AH00173: SIGHUP received.  Attempting to restart
[Mon Mar 28 21:58:43.607243 2016] [ssl:warn] [pid 7615] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
[Mon Mar 28 21:58:43.607309 2016] [lbmethod_heartbeat:notice] [pid 7615] AH02282: No slotmem from mod_heartmonitor
[Mon Mar 28 21:58:43.625618 2016] [mpm_prefork:notice] [pid 7615] AH00163: Apache/2.4.12 (Unix) OpenSSL/1.0.1e-fips PHP/5.6.9 configured -- resuming normal operations
[Mon Mar 28 21:58:43.625654 2016] [core:notice] [pid 7615] AH00094: Command line: '/usr/local/apache/bin/httpd'



无论访问html还是php文件,Nginx的access.log中会出现这样的记录:
106.113.167.138 - - [28/Mar/2016:21:59:21 +0800] "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 - - [28/Mar/2016:22:02:04 +0800] "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。

军哥运维代购:http://shop63846532.taobao.com/

发表于 2016-3-29 09:26:43 | 显示全部楼层

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

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

include proxy-pass-php.conf注释掉php就无法解析了
 楼主| 发表于 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呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2016-3-29 09:41:47 | 显示全部楼层

原帖由 licess 于 2016-3-29 09:26 发表
.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?
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 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啊。这点我有些想不太明白。
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 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上都有
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-11-17 17:46 , Processed in 0.030395 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表