Я пытаюсь настроить сервер 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, а "б" не работает на 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 информацию, которую я мог найти в Интернете ... но пока ничего не помогло ... Более того, когда я получаю прямой доступ "локальный: 8080 / а«Мне показывают json (как и следует), но когда я получаю доступ»локальный: 8080 / б"Вместо этого меня перенаправляют на"external-website-b.com/webservice.svc/etc? ..." даже с proxy_redirect выключен; Зачем? И означает ли это что-нибудь, связанное с проблемой?
Почему мой сервер node.js / express может обслуживать данные, но nginx не работает?
proxy_set_header Access-Control-allow-Origin "*". добавьте это в конфигурацию nginx (внутри всех директив местоположения)