Я хочу сделать приложение Express доступным черезhttp://website.com/appи использовать nginx в качестве обратного прокси-сервера, а также для обслуживания статических файлов.
Вот моя конфигурация nginx:
upstream app {
server localhost:3333;
}
server {
listen 80;
server_name website.com www.website.com;
root /var/www/website.com;
index index.html index.htm;
location = / {
try_files $uri $uri/ =404;
}
location /app/ {
alias /var/www/app/static;
try_files $uri $uri/ @app;
}
location @app {
proxy_pass http://app;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
index.js (расположен в /var/www/app/static/
) запрашивает некоторый ресурс через fetch("/info")
.
app.js (расположенный в /var/www/app/
) должен доставлять указанный ресурс с
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json())
app.get("/info", (req, res) => {
res.header("Content-Type",'application/json');
res.send(JSON.stringify(info));
})
app.listen(3333, () => {
console.log("Server listening at http://localhost:3333")
})
Когда я посещаюhttp://mywebsite.com/app, статические файлы обслуживаются nginx, но /info
выдают ошибку 404. Журнал ошибок Nginx:"/var/www/website.com/info" не удалось (2: нет такого файла или каталога). Приложение Express запущено ( $pm2 ls
-> статус «онлайн»).
Предполагаю, что прокси настроен неправильно или есть недопонимание того, как работает nginx и серверы с моей стороны (это мои первые шаги). Буду благодарен за совет.
решение1
для этого вам нужно сделать запись DNS,
Укажите местоположение контента, добавьте имя сервера в качестве сайта и в местоположении контента