代理重写错误

代理重写错误

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

相关内容