Мне нужно перенаправить мою страницу на страницу обслуживания, когда я получаю ошибки 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;
}