2

我已经阅读了适量的位置块文档,但我对 RegEx 没有太多经验,所以我对如何完成我想做的事情有点迷茫。以下 nginx 配置可能会解释我想要做的比我能说的更好的事情:

server {
        server_name example.com www.example.com;
        root /var/www/;
        index index.php;


        location /blog/ {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                try_files $uri =404;
                include fastcgi_params;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
        }

        location / {
                try_files $uri @uwsgi;
        }

        location @uwsgi {
                include uwsgi_params;
                uwsgi_pass unix:/tmp/uwsgi.sock;
        }


}

example.com/由瓶应用程序通过 uwsgi 提供服务,因此该位置下的所有内容都应路由到瓶应用程序并在那里处理。这按预期工作正常,但是我不知道如何向位置规则添加“异常”,以便它example.com/blog及其下../sub1/sub2的所有内容等都不会定向到瓶子应用程序,而是由 wordpress 及其 PHP 魔术处理。

这似乎设置起来应该非常简单,但事实证明很难用谷歌搜索这类问题的简单解决方案,因为每个人似乎都用大量非必要的东西来膨胀他们的“教程”配置,让初学者感到困惑。

4

1 回答 1

2

这可能需要一些调整,但您可能应该使用嵌套的位置块:

server {
    server_name example.com www.example.com;
    root /var/www;
    index index.php;

    location /blog/ {
        try_files $uri $uri/ /blog/index.php?$args;

        location ~ \.php$ {
            try_files $uri =404;
            include fastcgi_params;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
        }
    }

    location / {
        try_files $uri @uwsgi;
    }

    location @uwsgi {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/uwsgi.sock;
    }
}

请注意,默认 URI 已更改/blog/index.php为希望所有 WordPress 文件所在的位置。

于 2016-04-24T22:32:16.640 回答