2017-01-16 19 views
0

私はメザニンアプリを持っています。私はwebserverとnginxとしてリバースプロキシとしてのgunicornを使用しています。ただし、静的ファイルは提供されていません(ただし、組み込みのdjango開発サーバーを介して提供されます)。私はpython manage.py collectstaticを実行しました。ここでnginx + gunicorn + django/mezzanineが静的ファイルを提供していません

は私のnginx.confファイルです:

worker_processes 1; 

events { 

    worker_connections 1024; 

} 

http { 

    sendfile on; 

    gzip    on; 
    gzip_http_version 1.0; 
    gzip_proxied  any; 
    gzip_min_length 500; 
    gzip_disable  "MSIE [1-6]\."; 
    gzip_types  text/plain text/xml text/css 
         text/comma-separated-values 
         text/javascript 
         application/x-javascript 
         application/atom+xml; 

    # Configuration containing list of application servers 
    upstream app_servers { 

     server 127.0.0.1:8080; 
     # server 127.0.0.1:8081; 
     # .. 
     # . 

    } 

    # Configuration for Nginx 
    server { 

     # Running port 
     listen 80; 

     # Settings to serve static files 
     location ^~ /static/ { 

      # Example: 
      # root /full/path/to/application/static/file/dir; 
      root /root/myapp/myapp/static/; 

     } 

     # Serve a static file (ex. favico) 
     # outside /static directory 
     location = /favico.ico { 

      root /app/favico.ico; 

     } 

     # Proxy connections to the application servers 
     # app_servers 
     location/{ 

      proxy_pass   http://app_servers; 
      proxy_redirect  off; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-Forwarded-Host $server_name; 

     } 
    } 
} 

私は、静的なファイルを提供するために何ができますか?

答えて

0

これは、rootとnginxのaliasの間違った使用のようです。あなたのsettings.pyファイルに仮定して、あなたが持っている:

が指定した場所の代替を定義します。

location /static/ { 
     # Example: 
     # root /full/path/to/application/static/file/dir; 
     root /root/myapp/myapp/; 
     # - or - 
     # alias /root/myapp/myapp/static/; 
    } 

aliasの場合:

STATIC_URL = '/static/' 

はその後、あなたは次のようになります場所が欲しいです。たとえば、「/i/top.gif」のご要望に応じて、以下の構成

location /i/ { 
     alias /data/w3/images/; 
    } 

で、ファイル/data/w3/images/top.gifが送信されます。 ... 場所は、ディレクティブの値の最後の部分と一致した場合:

location /images/ { 
    alias /data/w3/images/; 
} 

ではなく、ルートディレクティブを使用した方がよい:

location /images/ { 
    root /data/w3; 
} 
+0

申し訳ありませんが、私は従いません。エイリアスで試してみるべきですか?代わりにルートを使うべきですが、私はエイリアスを使ったことはないと思われるので、ちょっと混乱します。 – skeletonsaurus

+0

自分のルートディレクティブとあなたのルートディレクティブとの違いを調べてください。ルートまたはエイリアスのいずれかを使用できます。正しいディレクトリを指していることを確認するだけです。 – 2ps

+0

私は両方を試しました(ルートディレクティブで 'static'ディレクトリを削除し、 'alias'でそれを保持しています)。どちらもうまくいかなかった。静的リソースが403を返しています。 – skeletonsaurus

関連する問題