Я пытаюсь создать прокси для моего приложения узла через nginx, думая, что это даст мне страницы с ошибками, если приложение узла не работает или недоступно на порту.
Приложение узла работает на 127.0.0.1:1337
и я слушаю mydomain:8080
и отправьте его.
server {
listen 8080;
server_name mydomain;
access_log /log/path/logging.log;
root /path/to/root/;
error_page 400 401 402 403 404 500 501 502 503 504 /error/index.html;
location / {
proxy_redirect off;
proxy_pass_header Server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_connect_timeout 5;
proxy_read_timeout 240;
proxy_intercept_errors on;
proxy_pass http://127.0.0.1:1337;
}
}
К сожалению, когда я выключаю приложение узла и запрашиваю у меня 502 плохой шлюз, mydomain:8080
. Однако это ожидаемое поведение от nginx. Мне нужна страница, которую я могу определить, которая будет отображаться, когда служба приложения узла не работает.
Есть идеи, что как это сделать?
Я нашел ответ:
server {
listen 8080;
server_name mydomain;
access_log /log/path/logging.log;
error_page 400 401 402 403 404 405 500 501 502 503 504 @error_page;
location @error_page {
root /var/www/html/;
rewrite ^ https://domain.com/error/index.html;
break;
}
location / {
proxy_redirect off;
proxy_pass_header Server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_connect_timeout 5;
proxy_read_timeout 240;
proxy_intercept_errors on;
proxy_pass http://127.0.0.1:1337;
}
}
Это перенаправит весь трафик с maindomain:8080
к https://domain.com/error/index.html
если служба на http://127.0.0.1:1337
недоступен (все ошибки).
Надеюсь, это поможет кому-то в будущем.
Вам не хватает того, что Nginx делает именно то, что должен, и ваши ожидания неверны. Вы говорите Nginx «используйте этот шлюз», а когда шлюза нет, он правильно сообщает об этом.
Что бы вы хотели или ожидали, если ваше приложение узла перестанет работать?
Обновить - вот как я откатываюсь с HHVM на PHP5, потому что HHVM довольно часто дает сбой.
upstream php {
server 127.0.0.1:9001;
}
upstream php-fpm {
server unix:/var/run/php-fpm/php-fpm.sock;
}
# Inside server block
location ~ \.(hh|php)$ {
error_page 502 = @fallback;
fastcgi_pass php;
}