В настоящее время я пытаюсь настроить виртуальные серверные блоки nginx, которые я абсолютно разрываю.
По сути, у меня есть экземпляр NodeJS, работающий на дроплете в DigitalOcean.Смысл этого приложения, чтобы разместить как веб-сайт, а также API.Я хочу, чтобы оба они работали на одной и той же капле.
Я настроил свое приложение NodeJS с помощью Express для создания маршрутизации и т. Д., А затем создал http-сервер с приложением Express.Поскольку мое объяснение может привести к путанице, я включил основы кода ниже:
const API_PORT = 8080;
const WEB_PORT = 8081;
const api = express();
const web = express();
web.use(express.static(path.join(__dirname, '../build')));
web.get('//', (req, res) => {
res.sendFile(path.join(__dirname, '../build', 'index.html'));
})
api.use((req, res, next) => {
const ip = (req. headers['x-forwarded-for'] || '').split(',').pop()
|| req.connection.remoteAddress
|| req.socket.remoteAddress
|| req.connection.socket.remoteAddress
if (req.headers.auth !== AUTHCODE) {
httpError(400, 'Validation failed');
console.warn('Bad Auth Code');
console.warn(req.headers.auth);
console.warn(ip);
return (res.json('Validation failed'));
}
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', '*');
res.setHeader('Access-Control-Allow-Headers', '*');
next();
});
Graph.route(api);
const apiServer = http.createServer(api);
const webServer = http.createServer(web);
apiServer.listen(WEB_PORT, '127.0.0.1', () => {
console.log(`API Server is running on port ${API_PORT}`);
});
webServer.listen(API_PORT, '127.0.0.1', () => {
console.log(`WEB Server is running on port ${WEB_PORT}`);
});
То, чего я хочу достичь, показано в коде выше, но по сути я пытаюсь прослушивать мой сервер APIна порт 8080 и мой сервер веб-сайта для прослушивания на порт 8081.
Мне сказали, что я могу использовать nginx для создания proxy_pass
для этого, хотя мне не удалось заставить его работать как задумано.Ниже вы видите два примера того, что я пытался сделать!Любой, кто сможет мне помочь, навсегда станет моим героем!
server {
listen lace.guide:443 ssl;
server_name lace.guide www.lace.guide;
ssl_certificate /var/my-server/ssl/myapp.crt;
ssl_certificate_key /var/my-server/ssl/myapp.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://127.0.0.1:8080/$request_uri;
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;
}
}
server {
listen api.lace.guide:443 ssl default_server;
server_name api.lace.guide www.api.lace.guide;
ssl_certificate /var/my-server/ssl/myapp.crt;
ssl_certificate_key /var/my-server/ssl/myapp.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://127.0.0.1:8081/$request_uri;
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;
}
}
У меня также есть еще одна довольно странная ошибка, которая означает, что, если я получаю доступ к своему api.lace.url/something/somethingElse
, на моем сервере он действительно набирает //something/somethingElse
(console.log из req.url
)