AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 793410
Accepted
Vee
Vee
Asked: 2025-04-07 10:24:19 +0800 CST2025-04-07 10:24:19 +0800 CST 2025-04-07 10:24:19 +0800 CST

Não é possível acessar arquivos estáticos para subdomínio no nginx

  • 772

Tenho um site estático e um backend de aplicativo Django em execução usando gunicorn na porta 8000 em um servidor.

Estou coletando arquivos CSS para o site estático em /mywebsite-deployment/staticDir/homepage/css/static_website.css, e o CSS para os modelos Django em /mywebsite-deployment/staticDir/dashboard/css/dashboard.css;

Consigo acessar o site estático usando mywebsite.com e www.mywebsite.com com CSS, e o backend do Django usando app.mywebsite.com, mas seu CSS não carrega.

O modelo no qual estou tentando acessá-lo se parece com isso:

{% load static %}

<html>

<head>
    <link href={% static '/dashboard/css/dashboard.css' %} rel="stylesheet" type="text/css" media="all" />
</head>

Meu aplicativo Django settings.py se parece com isso:

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

STATIC_ROOT = '/mywebsite-deployment/staticDir/'

STATIC_URL = 'static/'

Esta é minha configuração nginx:

    ssl_certificate         /etc/letsencrypt/live/mywebsite.co/fullchain.pem;    # managed by Certbot
    ssl_certificate_key     /etc/letsencrypt/live/mywebsite.co/privkey.pem;      # managed by Certbot
    
    root            /mywebsite-deployment/staticDir/;
    index           /homepage/index.html;
    error_page 404 500 502 503 504  /error.html;
    proxy_intercept_errors on;      # If proxy errors, let nginx process it
    
    # error_log /var/log/nginx/error.log info;
    
    server {
        # If host isn't a mywebsite host, close the connection to prevent host spoofing
        server_name _;
        listen 80 default_server;
        listen 443 ssl default_server;
    
        return 444;
    }
    
    # Redirect HTTP requests to HTTPS
    server {
        server_name mywebsite.co www.mywebsite.co app.mywebsite.co;
        listen 80;
        return 301  https://$host$uri;  # managed by Certbot
    }
    
    # Handle HTTPS static webserver requests
    server {
        server_name mywebsite.co www.mywebsite.co;
        listen 443  ssl;    # managed by Certbot
    }
    
    # Proxy HTTPS app requests to backend gunicorn service
    server {
        server_name     app.mywebsite.co;
        listen 443  ssl;    # managed by Certbot
    
        location / {    # Catch all - Match everything else not matched in any above location blocks within this server block
            proxy_redirect off;    # Stop redirects from proxy
    
            proxy_connect_timeout 3;    # Abort if service is unreachable
            proxy_read_timeout 3;       # Abort if the service is unresponsive
    
            include     proxy_params;
            proxy_pass  http://localhost:8000;
        }
    
        # If Gunicorn Django proxy app throws an error (like 404), nginx will handle it and show custom error page
        location /error.html {
            internal;
        }
    }

Quando inspeciono o modelo HTML no navegador, vejo que a URL que ele está tentando carregar é: https://app.mywebsite.co/static/dashboard/css/dashboard.css , mas não carrega.

Posso acessar o CSS da página inicial como: https://www.mywebsite.co/homepage/css/static_website.css e o CSS do painel como: https://www.mywebsite.co/dashboard/css/dashboard.css

Como posso usar o caminho correto para visualizar o CSS no painel? Acho que isso é um problema de configuração do nginx, mas sou novo no nginx e não sei como resolver. Por favor, me ajudem.

nginx
  • 1 1 respostas
  • 33 Views

1 respostas

  • Voted
  1. Best Answer
    Continuous Improvement
    2025-04-07T13:51:04+08:002025-04-07T13:51:04+08:00

    Como podemos acessar o CSS da página inicial como: https://www.mywebsite.co/homepage/css/static_website.csse o CSS do painel como: https://www.mywebsite.co/dashboard/css/dashboard.css.

    Acho que os arquivos CSS são armazenados lá /mywebsite-deployment/staticDir/porque a diretiva nginx rootestá definida como /mywebsite-deployment/staticDir/.

    A solução simples pode ser adicionar um locationbloco específico /static/dentro do bloco do servidor

    # Serve static files
    location /static/ {
        alias /mywebsite-deployment/staticDir;
    }
    

    Então o serverbloco se torna

        # Proxy HTTPS app requests to backend gunicorn service
        server {
            server_name     app.mywebsite.co;
            listen 443  ssl;    # managed by Certbot
            
            # Serve static files
            location /static/ {
                alias /mywebsite-deployment/staticDir/;
            }
    
            location / {    # Catch all - Match everything else not matched in any above location blocks within this server block
                proxy_redirect off;    # Stop redirects from proxy
        
                proxy_connect_timeout 3;    # Abort if service is unreachable
                proxy_read_timeout 3;       # Abort if the service is unresponsive
        
                include     proxy_params;
                proxy_pass  http://localhost:8000;
            }
        
            # If Gunicorn Django proxy app throws an error (like 404), nginx will handle it and show custom error page
            location /error.html {
                internal;
            }
        }
    

    Um dos principais benefícios dessa configuração é que o Nginx manipula arquivos estáticos diretamente, eliminando a necessidade de rotear essas solicitações pelo servidor de back-end.

    • 0

relate perguntas

  • nginx falha na instalação no Debian estável

  • Nginx gzip_types - uma diretiva redundante em alguns casos?

  • Configuração php-fpm independente da versão Nginx

  • Localização do Nginx ~ /\.ht

  • Hospedando vários aplicativos no Nginx Ubuntu 14.04

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve