Назад | Перейти на главную страницу

Почему мой прокси-сервер nginx не работает, но прокси-сервер node.js работает?

Я пытаюсь настроить сервер 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 (внутри всех директив местоположения)