Apache: как обслуживать как PHP, так и NodeJS

#node.js #apache

#node.js #апач #apache

Вопрос:

У меня есть сайт на PHP https://example.com. У меня есть поддомен приложения MEAN stack http://team.example.com . Он использует API, предоставляемые nodejs на порту 3000.

Я столкнулся с проблемой при запуске приложения наhttp://team.example.com где API Nodejs недоступен .

добавлено следующее в файл конфигурации Apache:

Прокси-канал /узел/http://localhost:3000 /

Я отправляю запрос api со стороны angular со следующим:

team.example.com/node/users/login

API-интерфейсы успешно достигнуты через postman, но сбой в браузере

Как я могу решить эту проблему?

Комментарии:

1. В файле конфигурации Apache, в теге ‘VirtualHost *.80’ я добавил следующее. — ProxyPass / node / localhost: 3000 Я также отправляю запросы в Node Api с example.com/node /. Теперь это работает отличным образом.

Ответ №1:

Я думаю, у вас проблема с CORS, я предполагаю, что вы используете express framework в своей службе узлов. Смотрите следующий пример кода, чтобы узнать, как решить проблему CORS для браузера.

 var http = require('http');
var express = require('express');
var app = express();

app.use(function(req, res, next) {
  res.header('Access-Control-Allow-Origin', "*");
  res.header('Access-Control-Allow-Methods','GET,PUT,POST,DELETE,OPTIONS'); 
  res.header('Access-Control-Allow-Headers', 'Content-Type'); 
  next();
});

app.post('/test-cors', function (req, res) {
  res.set('Content-Type', 'application/json');
  res.send(JSON.stringify({ 'status': "OK" }));
});

// Create http server and run it
var server = http.createServer(app);

server.listen(8081, function() {
    console.log("Listening on 8081");
});
  

В приведенном выше примере кода вам нужно сосредоточиться на следующих строках кода:

 app.use(function(req, res, next) {
  res.header('Access-Control-Allow-Origin', "*");
  res.header('Access-Control-Allow-Methods','GET,PUT,POST,DELETE'); 
  res.header('Access-Control-Allow-Headers', 'Content-Type'); 
  next();
});
  

Ответ №2:

Цитата из блока

Для использования прокси-сервера вы должны включить модуль прокси в apache. После этого перезапустите apache.

Если вы используете ОС Ubuntu, выполните следующую команду

прокси-сервер sudo a2enmod amp;amp; sudo a2enmod proxy_http

После этого вы должны бежать

перезапустить службу sudo apach2.