Назад | Перейти на главную страницу

Nginx не загружает css / js / images при перенаправлении

Мне нужно перенаправить мою страницу на страницу обслуживания, когда я получаю ошибки 50x. Он выполняет перенаправление, за исключением того, что он не загружает css, js или изображения. Журнал ошибок чистый, и журнал доступа не показывает никаких проблем.

Следующий код был добавлен в мой файл nginx.conf.default, но я не увидел изменений:

location ~ \.css {
    add_header  Content-Type    text/css;
}

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

Мой html файл находится в /home/user/Documents и мои файлы css / js / png находятся в /home/user/Documents/maintenance_files папка. Если я открываю html-файл в браузере, он правильно извлекает эти файлы.

Мои типы пантомимы в /opt/nginx/mime.types. Вот мой файл nginx.conf:

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
error_log   logs/error.log debug;

events {
    worker_connections  1024;
}

http {
    proxy_temp_path /home/user/work/nginx_files/proxy_tmpFiles 1 2;
    proxy_redirect off; # Tells the server we aren’t redirecting content. We actually do that later with proxy_pass.


    #include /etc/nginx/mime.types;
    default_type application/octet-stream;


    ##
    # Basic Settings
    ##

    sendfile on;
    keepalive_timeout 65;


    ##
    # Logging Settings
    ##

    #access_log /home/user/nginx_files/logs/access.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    ##
    # Virtual Host Configs
    ##

    #include /etc/nginx/conf.d/*.conf;
    #include /etc/nginx/sites-enabled/*;

    include  /opt/nginx/mime.types;

    server {
        listen 80;
        server_name localhost; 

        #location ~ \.css {
        #    add_header  Content-Type    text/css;
        #}

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

        error_page 500 502 503 504 /maintenance.html;
        location = /maintenance.html {
            #include  /opt/nginx/mime.types;

            root /home/user/Documents;
            #index maintenance.html;
            #internal; -> no changes
        }

        location / { 
            #include  /opt/nginx/mime.types;

            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-Proto $scheme;

            proxy_pass http://somelink; 
            #root /home/user/Documents;
            #index maintenance.html;
        }


    }
}

Моя проблема заключается во время перенаправления, когда я получаю 50x ошибок в этом коде. Страница html загружена, но nginx не загружает изображения или CSS.

error_page 500 502 503 504 /maintenance.html;
location = /maintenance.html {
    #include  /opt/nginx/mime.types;

    root /home/user/Documents;
    #index maintenance.html;
    #internal; -> no changes
}

Спасибо за помощь.

Ваша проблема в том, что вы обслуживаете свой статический контент с внутреннего сервера приложений. Поэтому, когда сервер внутренних приложений не может ответить, потому что он занят, Nginx готовит ответ 502. Ваша конфигурация предписывает Nginx обслуживать конкретный HTML-код в этом случае, который, в свою очередь, загружает больше статического содержимого из Nginx. Затем эти запросы передаются на сервер приложений, и для них также возвращаются 502.

В любом случае неплохо обслуживать статический контент непосредственно из Nginx, чтобы упростить работу внутреннего сервера по обслуживанию приложения.

Структурируйте конфигурацию Nginx следующим образом, чтобы Nginx обслуживал статические файлы:

  location / {
      try_files $uri $uri/ @backend;
    }

    location @backend {
      proxy_pass http://example.com;
    }