2016-09-28 9 views
0

私の/test_file.php/?param1=testの間にスラッシュを入れられるようにnginxを設定するには?作業nginx PHPの前にスラッシュをGETする

server { 
 
    listen 443 ssl http2; 
 
    listen [::]:443 ssl http2; 
 
    server_name example.com; 
 
    # rewrite ^/(.php*)/$ /$1 permanent; 
 
    root /var/www/example.com; 
 

 
    index index.html index.htm index.php; 
 

 
    charset utf-8; 
 

 
    location/{ 
 
     try_files $uri $uri/ /index.php?$query_string; 
 
    } 
 

 
    location = /favicon.ico { access_log off; log_not_found off; } 
 
    location = /robots.txt { access_log off; log_not_found off; } 
 

 
    access_log off; 
 
    error_log /var/log/nginx/example.com-error.log error; 
 

 
    error_page 404 /index.php; 
 

 
    location ~ \.php$ { 
 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
 
     fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
 
     fastcgi_index index.php; 
 
     include fastcgi_params; 
 
    } 
 

 
    location ~ /\.ht { 
 
     deny all; 
 
    } 
 
}

のURL(望ましくない)::私はしたいhttps://example.com/workouts.php?workout=206 URL:現在はここ/test_file.php?param1=test ...

は私の現在の構成であることができていますhttps://example.com/workouts.php/?workout=206

+0

試し取り除く$ URI /すなわち、try_files $ uriの/index.php?$query_string ;,私が言うも、try_files $ uriの/index.php。引数がデフォルトでアップストリームに渡されます。 – Satys

答えて

0

ブロック:

location ~ \.php$ { ... } 

は、末尾が.phpのURIを処理します。

単純な解決策は、正規表現を変更してpathinfoを含むURIを受け入れることです。しかし、既知の悪用を軽減するためにブロック内で他の変更を加える必要があります。詳細は、this documentを参照してください。例えば

location ~ [^/]\.php(/|$) { 
    fastcgi_split_path_info ^(.+?\.php)(/.*)$; 
    if (!-f $document_root$fastcgi_script_name) { 
     return 404; 
    } 

    # Mitigate https://httpoxy.org/ vulnerabilities 
    fastcgi_param HTTP_PROXY ""; 

    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
    fastcgi_index index.php; 
    include fastcgi_params; 
} 
関連する問題