2016-08-31 19 views
0

ユーザは、/〜userを入力するときに、ローカルユーザのホームディレクトリにコンテンツを表示する必要があります。ホームディレクトリにコンテンツを表示するためのNginxの設定

私はそのようにホームディレクトリを持つローカルユーザーを作成し、nginxのを構成した

www.blahblahblah.com/~user:

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    root /usr/share/nginx/html; 
    index index.html index.htm test.html; 

    # Make site accessible from http://localhost/ 
    server_name localhost; 

    location ~* /\~(.*)/$ { 
     root /home/$1/; 
    } 

    location/{ 
    # First attempt to serve request as file, then 
    # as directory, then fall back to displaying a 404. 
     try_files $uri $uri/ =404; 
    # Uncomment to enable naxsi on this location 
    # include /etc/nginx/naxsi.rules 
    } 
} 

しかし、私はまだエラーが見つかりません404を得ました。

答えて

0

問題は、要求ファイル名を取得するためにルートとURIが連結されているため、nginxroot /home/user/~user/を配信するよう求めていることです。

解決策は、rewrite ... breakを使用してURIをサニタイズすることです。正規表現を拡張して両方の要素をキャプチャし、rootrewrite ... breakの文で指定されたキャプチャを使用できます。

location ~* /\~(?<username>\w+)(?<userpath>/.*)$ { 
    root /home/$username; 
    rewrite^$userpath break; 
} 
関連する問題