2016-09-26 99 views
0

我对/登录/要从PHP目录/ var/WWW/saml_provider/WWW服务的这个配置正试图把所有的请求:使用nginx的重写根URL删除/网址目录

location ^~ /login/ { 
    root /var/www/saml_provider/www/; 

    index moo.php; 
    try_files $uri $uri/ /login$is_args$args =404; 

    location ~ \.php$ { 

     fastcgi_pass presentation-php-fpm:9000; 
     include fastcgi_params; 

     fastcgi_param SCRIPT_FILENAME $request_filename; 
     fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php_errors.log"; 
     fastcgi_buffers 16 16k; 
     fastcgi_buffer_size 32k; 
    } 
} 

不幸的是,它期望文件位于/ var/www/saml_provider/www/login /作为root用户将url附加到路径中。我怎样才能重写这个去除/ login /,以便在正确的位置找到这些文件? (NB将文件移动到登录目录不是一个选项)。由于

回答

1

你可以重写/login/saml_provider/www内部,并隐藏后者从外部访问:

location ^~ /login { 
    rewrite ^/login(.*)$ /saml_provider/www$1 last; 
} 
location ^~ /saml_provider/www { 
    internal; 

    root /var/www; 
    index moo.php; 
    try_files $uri $uri/ /saml_provider/www/index.php$is_args$args; 

    location ~ \.php$ { 
     try_files $uri =404; 

     fastcgi_pass presentation-php-fpm:9000; 
     include fastcgi_params; 

     fastcgi_param SCRIPT_FILENAME $request_filename; 
     fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php_errors.log"; 
     fastcgi_buffers 16 16k; 
     fastcgi_buffer_size 32k; 
    } 
} 

它简化了根本问题重写,并避免使用别名。但这确实意味着从外部访问中删除了URI /saml_provider/www,但希望它不太可能与同一台服务器上的另一个应用程序发生冲突。