我正在将我管理的 wiki (practicalplants.org) 迁移到运行 Nginx 的新服务器。我习惯使用 Apache;这是我第一次使用 Nginx,我无法适应我在 Apache 中设置的重写和别名。目录布局如下
/html (server root)
/html/w (mediawiki)
/html/community (vanilla)
/html/blog (wordpress)
/sso (Zend Framework SSO solution)
/sso/public
如您所见,sso 解决方案具有它自己的可公开访问的应用程序根目录,我正尝试将其设置为root
指令location
,但似乎以下内容try_files
仍尝试回退到server root
。
这是我的配置:
server {
server_name practicalplants.org;
root /var/www/v-practicalplants/html;
access_log /var/log/nginx/practicalplants.org-access.log;
error_log /var/log/nginx/practicalplants.org-error.log;
include /etc/nginx/biowikifarm_listen80_443.conf;
include /etc/nginx/biowikifarm_generics.conf;
include /etc/nginx/biowikifarm_generic_php.conf;
disable_symlinks off;
location = / {
# Redirect domain-only access to wiki:
rewrite "^[/]?$" /wiki/ permanent;
}
location /wiki {
#rewrite "^/wiki[/]?([^?]*)(?:\?(.*))?" /w/index.php?title=$1&$args last;
try_files $uri $uri/ /w/index.php?title=$uri&$args;
}
location /w/media {
location ~ ^/w/media/thumb/(archive/)?[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ {
try_files $uri @thumb_w;
}
}
location @thumb_w {
rewrite ^/w/media/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ /w/thumb.php?f=$1&width=$2;
rewrite ^/w/media/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ /w/thumb.php?f=$1&width=$2&archived=1;
include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/w/thumb.php; fastcgi_pass php5-fpm-sock;
}
location /sso {
root /var/www/v-practicalplants/sso/public;
try_files $uri $uri/ /index.php
}
}
如果我导航到 /sso,此配置会给出 404
这里面有什么明显的错误吗?
答案1
您需要alias
在这里使用 而不是root
。
您现有的配置尝试加载/var/www/v-practicalplants/sso/public/sso/index.php
,这可能不是您想要的。无论它在哪个文件location
中,root
始终指定文档root
,即 的位置/
。
而是使用alias
来指定 的位置location
。
location /sso/ {
alias /var/www/v-practicalplants/sso/public;
try_files.....