NGINX:主位置块覆盖子目录位置?
NGINX: main location block overriding sub directory location?
我已经阅读了一定数量的位置块文档,但我对 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/
由 bottle 应用程序通过 uwsgi 提供服务,因此此位置下的所有内容都应路由到 bottle 应用程序并在那里处理。这按预期工作正常,但是我不知道如何将 'exception' 添加到位置规则,以便 example.com/blog
以及它下面的所有内容 ../sub1/sub2
等不指向瓶子应用程序,但实际上由 wordpress 及其 PHP 魔法处理。
这似乎设置起来应该非常简单,但事实证明很难 google 简单地解决这类问题,因为每个人似乎都在用大量的东西来膨胀他们的 'tutorial' 配置使初学者感到困惑的非必需品。
这可能需要一些调整,但您可能应该使用嵌套位置块:
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 文件所在的位置。
我已经阅读了一定数量的位置块文档,但我对 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/
由 bottle 应用程序通过 uwsgi 提供服务,因此此位置下的所有内容都应路由到 bottle 应用程序并在那里处理。这按预期工作正常,但是我不知道如何将 'exception' 添加到位置规则,以便 example.com/blog
以及它下面的所有内容 ../sub1/sub2
等不指向瓶子应用程序,但实际上由 wordpress 及其 PHP 魔法处理。
这似乎设置起来应该非常简单,但事实证明很难 google 简单地解决这类问题,因为每个人似乎都在用大量的东西来膨胀他们的 'tutorial' 配置使初学者感到困惑的非必需品。
这可能需要一些调整,但您可能应该使用嵌套位置块:
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 文件所在的位置。