2016-09-26 70 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,但希望它不太可能與同一臺服務器上的另一個應用程序發生衝突。