通过清心醉

NGINX反向请求APACHE的伪静态出现404错误

刚在配置盼盈信息港的时候,出现了404,这页面不陌生。

首先看看NGINX的配置吧:

server {
listen 80;
server_name ipanying.cn *.ipanying.cn;
location / {
root /var/webs/ipanying/public_html/;
index index.php index.html index.htm;

location ~ .*\.(js|css)$ {
access_log off;
expires 1d;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
access_log off;
expires 3d;
}
location ~ .*\.(php?|cgi|pl|py)$ {
proxy_pass http://127.0.0.1:9999;
proxy_set_header Host $host;
}
}
}

 

很清楚的看到location ~ .*\.(php?|cgi|pl|py)$反向请求给APACHE的9999端口

因为APACHE端口默认是80,而我修改成127.0.0.1:9999

自认没错啊,因为9999端口只允许内网访问(即外网无法非法获取,甚至我可以在NGINX进行更多的负载均衡的反向请求);

在根目录内放个文件打印phpinfo()却没问题;这让我联想到反向请求的根本,问题自然就清晰了!

location ~ .*\.(php?|cgi|pl|py)$居然都把请求发向转发给APACHE了,而伪静态是.html做结尾,自然而然该页面是由NGINX进行动作!可是NGINX对伪静态之后的.html文件进行数据解析,却是不存在的。

所以,以下的这段

location ~ .*\.(php?|cgi|pl|py)$ {
proxy_pass http://127.0.0.1:9999;
proxy_set_header Host $host;
}

明显就有问题。如果是针对DEDE这种国产高I/O开销的纯静态页面是可以进行的,因为静态.html文件是实实在在存在的。所以针对动态伪静态,应该修改为:

#location ~ .*\.(php?|cgi|pl|py)$ {
proxy_pass http://127.0.0.1:9999;
proxy_set_header Host $host;
#}

没错,注释掉就解决问题!

如果你有更多的服务器配置问题,欢迎咨询,LANMP任意组合任意版本!

 

 

关于作者

清心醉 administrator

发表评论

请输入验证码: