刚在配置盼盈信息港的时候,出现了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任意组合任意版本!
关于作者