Приложение OpenStack MERN выбрасывает сеть :: ERR_CONNECTION_REFUSED - PullRequest
0 голосов
/ 06 марта 2019

Мое приложение должно работать в среде OpenStack (Ubuntu 18.04 VPS размещено у моего обычного хостинг-провайдера).

На моей локальной машине все работает нормально, но при развертывании на сервере OpenStack я получаюошибка: GET https://localhost:3000/api/room/name/Palace net::ERR_CONNECTION_REFUSED при моем вызове React в серверную часть Node.js.

Error: Network Error
    at e.exports (createError.js:17)
    at XMLHttpRequest.p.onerror (xhr.js:87)

Конфигурация NGINX:

  GNU nano 2.9.3                                                                                      /etc/nginx/conf.d/ticket-system.ml.conf

server {
    if ($host = www.xxxxxxxx) {
        return 301 https://$host$request_uri;
    }


    if ($host = xxxxxxxx) {
        return 301 https://$host$request_uri;
    }

}

server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name xxxxxxxx www.xxxxxxxx;
        ssl_certificate /etc/letsencrypt/live/xxxxxxxx;
        ssl_certificate_key /etc/letsencrypt/live/xxxxxxxx;
        ssl_ciphers         EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
        ssl_protocols       TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location /  {
                proxy_pass    http://localhost:5000; # React app running on port 5000
                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;
        }
}

В приложении My Node.js настроено:

// static files location
app.use(express.static(path.join(__dirname, 'client', 'build')));
...
// configure our app to handle CORS requests
app.use(cors());
...
const port = process.env.PORT || 3000;

app.listen(port, () => console.log(`Server running on port ${port}`));

Приложение My React настроено на:

package.json:

"proxy": "https://192.168.0.12:3000"

room.component.js:

  componentDidMount() {
    axios
      .get('https://localhost:3000/api/room/name/Palace')
      .then(res => {
        this.setState({
          ******
        });
      })
      .catch(err => console.log(err));
  }

cat / var/log/nginx/error.log не показывает никаких записей

Я пробовал несколько ожидаемых решений, но ни одно из них не работает.Кто-нибудь может увидеть ошибку где-то в настройках?

1 Ответ

0 голосов
/ 07 марта 2019

исправлено путем добавления местоположения nodejs в файл конфигурации nginx:

        location /api/ {
                proxy_pass http://localhost:8000/api/; # Node.js app running on port 8000, change if needed
                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;
        }

Перезагрузите nginx и проблема решена.

...