Я пытаюсь настроить сервер nginx для обратного обращения данных прокси с двух разных серверов через ajax. Однако работает только один из запросов. Другой дает мне Нет Ошибка заголовка Access-Control-Allow-Origin .
Однако запуск того же внешнего интерфейса, который выполняет запросы ajax на сервере node.js, работает:
"use strict";
let express = require('express');
let request = require('request');
let PORT = process.env.PORT || 3000;
let app = express();
app.use(express.static(__dirname + "/public"));
app.get("/a", (req, res) => {
let url = "http://external-website-a.com/rest.exe/etc?...";
request(url).pipe(res);
});
app.get("/b", (req, res) => {
let url = "http://external-website-b.com/webservice.svc/etc?...";
request(url).pipe(res);
});
let server = app.listen(PORT, () => {
console.log("Listening on port: " + PORT);
});
С node.js клиент получает оба json файлы, а "b" не работает на nginx. Вот моя конфигурация для сайтов / по умолчанию:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html
server_name _;
location / {
sendfile off; #http://stackoverflow.com/questions/37742950
try_files $uri $uri/ /index.html;
}
location /a {
proxy_pass http://external-website-a.com/rest.exe/etc?...;
}
location /b {
proxy_pass http://external-website-b.com/webservice.svc/etc?...;
}
}
Я пытался добавить всю информацию proxy_set_header , которую мог найти в Интернете .. но пока ничего не помогло .. Кроме того, когда я напрямую обращаюсь к « localhost: 8080 / a », мне показывается json (как и должно), но когда я получаю доступ к « localhost: 8080 / b », я вместо этого перенаправляюсь на " external-website-b.com/webservice.svc/etc? ... " даже при выключенном proxy_redirect; Почему? И означает ли это что-нибудь, связанное с проблемой?
Почему мой сервер node.js / express может обслуживать данные, но nginx не работает?
proxy_set_header Access-Control-allow-Origin "*". добавьте это в конфигурацию nginx (внутри всех директив местоположения)