nginx ищет статические файлы не в том месте - PullRequest
0 голосов
/ 02 мая 2020

мое Django развертывание с ec2, nginx и gunicorn прошло хорошо, хотя мои статические файлы не загружаются, браузер показывает ошибку 404. И это потому, что nginx выглядит в совершенно ином месте, чем статика. На данный момент я перепробовал множество конфигураций, и ничего не помогло. Мне интересно, может ли пара свободных sh глаз обнаружить здесь ошибку, которую я не делаю.

/ sites-enabled / django .conf:

server {
    server_name  site.net www.site.net;

    location /static/ {
        autoindex on;
        alias /home/ubuntu/saas/static/;
}

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/ubuntu/saas/app.sock;
}

    location ~ \.css {
        add_header  Content-Type    text/css;
}
    location ~ \.js {
        add_header  Content-Type    application/x-javascript;
}

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/site.net/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/site.net/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}



server {
    if ($host = www.site.net) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = site.net) {
        return 301 https://$host$request_uri;
    } # managed by Certbot



    listen 80;
    server_name  site.net www.site.net;
    return 404; # managed by Certbot
}

и мои django settings.py выглядят так, и collectstatics работает отлично.

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'staticfiles')
]

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

Я удалил файл по умолчанию, но все равно кажется, что nginx ищет статические файлы в неправильном месте в соответствии с этой ошибкой. Log:

2020/05/01 19:57:45 [error] 3502#3502: *6 open() "/usr/share/nginx/html/static/css/custom.css" failed (2: No such file or directory), client: 86.221.78.105, server: site.net, request: "GET /static/cs$

Я перезагрузил сервер, перезагрузите nginx, ничего не получается. Может быть, у кого-то есть представление о том, что я могу попробовать в этот момент?

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

Вот что я сделал, чтобы решить проблему. Избавляемся от индекса по умолчанию. html в / usr / share / nginx / html / и запускаем скрипт conf как:

server {
    server_name  site.net www.site.net;

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/site.net/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/site.net/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot



    location /static/ {
        autoindex on;
        alias /home/ubuntu/saas/static/;
}

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/ubuntu/saas/app.sock;
}

}



server {
    if ($host = www.site.net) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = site.net) {
        return 301 https://$host$request_uri;
    } # managed by Certbot



    listen 80;
    server_name  site.net www.site.net;
    return 404; # managed by Certbot
}

Although this seems to be a workaround it makes the trick
0 голосов
/ 02 мая 2020

Обычно есть файл default.conf, который устанавливается с nginx при установке с yum или apt. Это будет либо /etc/nginx/conf.d/default.conf, либо /etc/nginx/sites-enabled/default.conf. Удалите этот файл и перезагрузите nginx с помощью sudo systemctl reload nginx, и вам будет хорошо, если go будет отсутствовать другой файл конфигурации на вашем сервере, о котором вы не знаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...