Конфигурация nginx для обеспечения динамических страниц с ошибками
У меня есть настройка сервера nginx, которая служит для прокси-сервера и статического контента. Статическое содержимое основано на нескольких реагирующих приложениях. Что я хочу сделать, это заменить страницы ошибок по умолчанию из nginx и обслуживать страницы ошибок из React App.
Приложение React обрабатывает страницы ошибок на основе URL. http://localhost/401.html
предоставит стандартную страницу ошибок HTTP 401 для приложения и так далее. Проблема в том, как правильно настроить это в nginx, потому что на самом деле нет 401.html
стр. Существует только один HTML-файл, это index.html. Приложение React обрабатывает все это на основе URL-адреса с помощью React Router.
Я пытался с некоторыми error_page
Конфигурация с nginx без удачи.
Вот как выглядит конфигурация страницы ошибки: `` `
error_page 400 /error/400.html;
error_page 401 /error/401.html;
error_page 402 /error/402.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 405 /error/405.html;
error_page 406 /error/406.html;
error_page 407 /error/407.html;
error_page 408 /error/408.html;
error_page 409 /error/409.html;
error_page 410 /error/410.html;
error_page 411 /error/411.html;
error_page 412 /error/412.html;
error_page 413 /error/413.html;
error_page 414 /error/414.html;
error_page 415 /error/415.html;
error_page 416 /error/416.html;
error_page 417 /error/417.html;
error_page 418 /error/418.html;
error_page 422 /error/422.html;
error_page 423 /error/423.html;
error_page 424 /error/424.html;
error_page 426 /error/426.html;
error_page 428 /error/428.html;
error_page 429 /error/429.html;
error_page 431 /error/431.html;
error_page 451 /error/451.html;
# 50x errors
error_page 500 /error/500.html;
error_page 501 /error/501.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
error_page 504 /error/504.html;
error_page 505 /error/505.html;
error_page 506 /error/506.html;
error_page 507 /error/507.html;
error_page 511 /error/511.html;
location ^~ /error/ {
root /usr/local/var/www/html/;
allow all;
try_files $uri $uri/ /index.html;
}
`` `
И вот как я включаю его в свой nginx.conf
:
server {
listen 8443 ssl;
server_name localhost;
ssl_certificate domain.crt;
ssl_certificate_key domain.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
if ( $http_user_agent ~* (nmap|nikto|wikto|sf|sqlmap|bsqlbf|w3af|acunetix|havij|appscan) ) {
return 444;
}
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $server_name:$server_port;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
include error-pages/error_pages.conf;
location /backend/ {
proxy_pass https://localhost:8181/backend/;
proxy_intercept_errors on;
}
}
Можно ли обслужить страницы с ошибками, как это в nginx? Потому что он по-прежнему дает мне стандартную страницу ошибки 404 not found от nginx, потому что я думаю, что она пытается найти 401.html
страница в этой папке.
1 ответ
Почему бы не сделать что-то подобное? Предполагая, что у вас есть каталог ошибок.
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 405 /error/405.html;
error_page 500 501 502 503 504 /error/5xx.html;
location ^~ /error/ {
internal;
root /var/www/default;
}
Вы можете использовать это как ссылку