Запуск nginx для обслуживания файлов и работы в качестве обратного прокси-сервера для приложения Node в том же домене - PullRequest
3 голосов
/ 09 февраля 2020

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

Например,

  • / Статически обслуживаемые файлы для root веб-сайта
  • / app / Node app, работающего на порту 3000 с Nginx обратным прокси-сервером
server {
        listen 80;
        listen [::]:80;
        server_name  example.com www.example.com;

        root /var/www/example.com/html;
        index index.html index.htm;

        # Set path for access_logs
        access_log /var/log/nginx/access.example.com.log combined;

        # Set path for error logs
        error_log /var/log/nginx/error.example.com.log notice;

        # If set to on, Nginx will issue log messages for every operation
        # performed by the rewrite engine at the notice error level
        # Default value off
        rewrite_log on;

        # Settings for main website
        location / {
                try_files $uri $uri/ =404;
        }

        # Settings for Node app service
        location /app/ {
                # Header settings for application behind proxy
                proxy_set_header Host $host;

                # proxy_set_header X-NginX-Proxy true;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";

                # Proxy pass settings
                proxy_pass http://127.0.0.1:3000/;

                # Proxy redirect settings
                proxy_redirect off;

                # HTTP version settings
                proxy_http_version 1.1;

                # Response buffering from proxied server default 1024m
                proxy_max_temp_file_size 0;

                # Proxy cache bypass define conditions under the response will not be taken from cache
                proxy_cache_bypass $http_upgrade;
        }
}

На первый взгляд это работает, но Со временем я обнаружил, что на маршруте приложения Node постоянно получают 502 ошибки. Это относится как к самому приложению, так и к активам * stati c, включенным в приложение.

Я пробовал использовать различные варианты вышеуказанного конфига, но ничего, что я не могу найти, похоже, не решает проблему , Я читал о проблемах с SE Linux, но в данный момент этого не происходит на рассматриваемом сервере.

Несколько дополнительных бит информации; Сервер: Ubuntu 18.04.3 Nginx: nginx / 1.17.5

2020/02/09 18:18:07 [error] 8611#8611: *44 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: x, server: example.com, request: "GET /app/assets/images/image.png HTTP/1.1", upstream: "http://127.0.0.1:3000/assets/images/image.png", host: "example.com", referrer: "http://example.com/overlay/"
2020/02/09 18:18:08 [error] 8611#8611: *46 connect() failed (111: Connection refused) while connecting to upstream, client: x, server: example.com, request: "GET /app/ HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "example.com"

Кто-нибудь сталкивался с подобными проблемами или знает, что я сделал не так?

Заранее спасибо!

1 Ответ

0 голосов
/ 10 февраля 2020

Это может быть из-за вашего маршрутизатора узла. Лучше поделиться кодом узла тоже. В любом случае попробуйте поставить свой основной роутер и stati c route как app.use('/app', mainRouter); и посмотрите, есть ли смысл?

...