web-dev-qa-db-ja.com

django nginx静的ファイル404

これが私の設定です:

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

STATIC_ROOT = '/home/Django-projects/tshirtnation/staticfiles'

これが私のnginx構成です:

server {
    server_name 77.241.197.95;

    access_log off;

    location /static/ {
        alias /home/Django-projects/tshirtnation/staticfiles/;
    }

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
    }
}

python manage.py collectstaticを実行しましたが、すべての静的ファイルがコピーされました。サーバーをgunicorn_Django--bind:my-ip:8001で実行しましたが、静的ファイルを除いてすべてが機能しているようです。

編集:私は実行しました

Sudo tail /var/log/nginx/error.log

静的ファイルが見つからないというエラーはないようです:/

16
Marijus

同じ問題が発生し、/の場所から末尾の/static/を削除することで、nginx構成を修正できました。

location /static {  # "/static" NOT "/static/"
    # ...
}
21
pztrick

正規表現のチェックをスキップするには、静的な場所に^~プレフィックス修飾子を追加してみてください。

location ^~ /static/ {
    alias /home/Django-projects/tshirtnation/staticfiles/;
}
5
Cole Tierney

settings.py:

ALLOWED_HOSTS = ['*']

STATIC_URL = '/static/'
STATIC_ROOT = '/home/calosh/PycharmProjects/Proyecto_AES/static/'

MEDIA_ROOT = '/home/calosh/PycharmProjects/Proyecto_AES/media/'
MEDIA_URL = '/media/'

Nginx構成(/ etc/nginx/sites-enabled/default)

server {
    server_name localhost;

    access_log off;

    location /static/ {
        alias /home/calosh/PycharmProjects/Proyecto_AES/static/;
    }

    location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_set_header X-Real-IP $remote_addr;
            add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
    }
}

次に、nginxサーバーを再起動します。

Sudo service nginx restart

そしてgunicornを実行します:

gunicorn PFT.wsgi

ローカルホストまたはローカルネットワーク全体(ポート80)でアプリケーションを提供します。

http://127.0.0.1/
1
calosh

Settings.pyに、次のように入力します。

STATICFILES_FINDERS = (
'Django.contrib.staticfiles.finders.FileSystemFinder',
'Django.contrib.staticfiles.finders.AppDirectoriesFinder'
)
STATIC_ROOT = "/home/Django-projects/tshirtnation/staticfiles/"
STATIC_URL = '/static/'

あなたはこれを必要としません:

STATICFILES_DIRS = ...
1
rafaels88

settings.pyでこれを試してください:

import os
ROOT_PATH = os.path.dirname(__file__)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(ROOT_PATH,'static/')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]

およびnginx(またはサーバー設定)の構成ファイル:

location /static {
    alias /home/djangohome/static; # your Django project's static files - amend as required
}
0
Robert Moon

私はブラウザがあなたの静的を見つけようとしていると思います:

http://127.0.0.1:8001/static/

Nginxはデフォルトで80ポートで動作しますが。

Nginx configで8001ポートを定義するか、80ポートでDjangoサーバーを実行する必要があります。

0
Eugene Soldatov

私のはこのように見えます、そしてそれは働きました:

STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), '..', 'static'),
)

そしてnginx構成では、私の場所/ static /は場所/の上にありますこのように

location /static {
    //
}

# Finally, send all non-media requests to the Django server.
location / {
    //
}

そしてもう1つ、それが重要かどうかはわかりませんが、サーバーに「リッスン」があります{}。それが役立つかどうかはわかりません。

0
shellbye

これを確認してください

1静的な古いものにnginxからアクセスできるかどうかは、フォルダーのアクセス許可を意味します。

2またはこれを行う

これを置き換えます:

STATIC_ROOT = '/home/Django-projects/tshirtnation/staticfiles'

これとともに

STATIC_ROOT = ''

そしてこれを設定に追加します

STATICFILES_DIRS = (
     '/home/Django-projects/tshirtnation/staticfiles/',
)

Nginxサーバーをリロードすることを忘れないでください。

これがうまくいくことを願っています。

0
Shanki

問題は、location /ブロックの後でも、常にlocation /static/ブロックが使用されるため、すべてがproxy_passされます。
ここでの解決策は、いくつかのtry_files魔法を使用することです。

server {
    server_name 77.241.197.95;

    access_log off;

    location / {
        try_files $uri @Django;
    }

    location /static/ {
        alias /home/Django-projects/tshirtnation/staticfiles/;
        try_files $uri =404;
        # here we use =404 because there is no need to pass it to gunicorn.
    }

    location @djago {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
    }
}
0
n1xx1