我正在将我pipe理的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解决scheme有它自己的可公开访问的应用程序根目录,我试图将它设置为location指令的root ,但似乎下面的try_files仍然试图回退到server root 。
这是我的configuration:
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,这个configuration给了我一个404
这里有什么明显的错吗?
你需要在这里使用alias而不是root 。
你现有的configuration尝试加载/var/www/v-practicalplants/sso/public/sso/index.php ,这可能不是你想要的。 不pipe它在哪个location , root总是指定文档root ,即/的位置。
使用alias来指定位置的location 。
location /sso/ { alias /var/www/v-practicalplants/sso/public; try_files.....