Express создание ошибки 404 на неиндексном маршруте с прокси nginx, но не на локальном - PullRequest
0 голосов
/ 29 мая 2020

У меня есть сервер express, который обрабатывает мою маршрутизацию, и я использую nginx для проксирования моих запросов. Однако при доступе к маршруту, отличному от '/', я получаю сообщение об ошибке 404 от express. До сих пор я просмотрел множество других ответов, и все они кажутся 404 из nginx и решаются путем удаления try_files $uri $uri/ =404;, но это не для меня. Я также вижу много вопросов о 404-ing для файлов stati c с помощью express / nginx, но я не думаю, что это обязательно так. Скорее, я не уверен, как моя ситуация связана с этими вопросами, поскольку я создаю шаблон с помощью pug с express.

Я получаю следующую ошибку:

NotFoundError: Not Found
    at /root/my-app/app.js:27:10
    at Layer.handle [as handle_request] (/root/my-app/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/root/my-app/node_modules/express/lib/router/index.js:317:13)
    at /root/my-app/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/root/my-app/node_modules/express/lib/router/index.js:335:12)
    at next (/root/my-app/node_modules/express/lib/router/index.js:275:10)
    at /root/my-app/node_modules/express/lib/router/index.js:635:15
    at next (/root/my-app/node_modules/express/lib/router/index.js:260:14)
    at Function.handle (/root/my-app/node_modules/express/lib/router/index.js:174:3)
    at router (/root/my-app/node_modules/express/lib/router/index.js:47:12)

, которая запускается (в приложении js):

app.use((req, res, next) => {
    next(createError(404));
});

Мой маршрутизатор выглядит так:

router.get('/', (req, res) => {
    res.render('index');                        // does not give me 404 error
});

router.get('/other-route', (req, res) => {
    res.render('other-route-pug-file');         // gives me 404 error
});

Моя nginx конфигурация выглядит так:

server {
    listen 80;
    server_name example.com;
    rewrite ^/(.*) https://example.com/$1 permanent;
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    # ssl config details

    server_name example.com www.example.com;

    location / {
        proxy_pass http://localhost:3000; # the port that my express server is listening to
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Таким образом, эта ошибка появляется только тогда, когда я перенаправляю свое приложение через nginx в свой домен. На localhost я вижу /other-route нормально. Я также просто не уверен, как я могу go отладить что-то вроде этого, поскольку я действительно не могу console.log() куда-то легко, и я новичок в проксировании через nginx, поэтому любая помощь в любой области / решении это очень ценится. Спасибо!

1 Ответ

0 голосов
/ 30 мая 2020

Я исправил свою проблему. Я использую неэффективный метод для синхронизации c моего кода на сервере и в github. У меня не было yarn install в моем каталоге после того, как я клонировал его с первого раза. Я не знаю, почему я просто не зашел в свой каталог на сервере. Я не совсем уверен, почему другие части моего проекта работали, но это помогло мне. Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...