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 编辑 ] 这个配置文件没有错误信息
你都修改了什么文件? 谢谢军哥回复。
我把网站的根目录由原来的/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 编辑 ] 在执行p.php的时候,看到编译引擎是apache,端口是80,不应该是88吗?
另,所说的.user.ini为啥哪儿也找不到呢? 每次一访问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。 .user.ini 只有在lnmp下有
304是缓存过的文件,是正常代码
这是反代过去的,显示80,因为是反代过去的nginx上肯定也会有日志
include proxy-pass-php.conf注释掉php就无法解析了 可能是没有说清楚。
我装的是LNMPA,而且nginx.conf中index的顺序也是index.html index.html index.php,按说默认的首页应该是index.html啊,可是直接访问IP地址,显示的默认首页却是index.php。我故意测试了一个不存在的html页面,如下图,显示的404错误页中也是Apache,为什么不是Nginx呢?
原帖由 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? 搞定了。
原来我把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啊。这点我有些想不太明白。
回复 8# 的帖子
伪静态和静态都是html或类似结尾nginx是没法区分你访问的这个html是伪静态还是静态html文件,所以要先去try_files一下,如果存在这个文件就直接nginx处理,否则抛给apache,所以是apache显示404
index顺序的话就是nginx中的默认设置就是先index.html
前面我已经说了try_files了,端口80 6楼上说过了是反代的
具体你可以看一下日志记录,正常默认情况下 纯静态文件肯定只有nginx上有日志记录,伪静态的话肯定nginx、apache上都有
页:
[1]