URLteste.oficial.news/my1
返回状态 404 和teste.oficial.news/other
状态 400...但是文件和 PHP 都很好。
server {
server_name teste.oficial.news;
root /var/www/teste;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ @proxy;
}
location @proxy {
rewrite (my[23])$ ETC.php?cmd=$1
last;
rewrite other$ index.html
break;
proxy_pass http://127.0.0.1;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
include snippets/ssl-oficial.news.conf;
} #end server
什么是坏?
答案1
我尝试了一个与您描述的类似的示例 nginx 配置文件:
root /var/www/teste;
rewrite other$ index.html break;
执行 之后curl localhost/this/or/other
,会出现以下错误消息/var/log/nginx/error.log
,如下所示tail /var/log/nginx/error.log
:
2017/07/24 08:21:32 [error] 45637#0: *1 open() "/var/www/testeindex.html" failed (2: No such file or directory), client: 127.0.0.1, server: , request: "GET /this/or/other HTTP/1.1", host: "localhost
除非您的系统中存在这样的文件,否则您同样会因为类似的原因收到类似的消息。
您的片段也一样rewrite (my[23])$ ETC.php?cmd=$1
。
解决方案:正确重写文件 — 如果replacement
的部分rewrite
不以方案或斜线开头,则您可能做错了。/
在指令中添加一些符号rewrite
。