【问题标题】:OpenStack MERN app is throwing net::ERR_CONNECTION_REFUSEDOpenStack MERN 应用程序正在抛出 net::ERR_CONNECTION_REFUSED
【发布时间】:2019-03-06 20:37:59
【问题描述】:

我的应用程序必须在 OpenStack 环境中运行(Ubuntu 18.04 VPS 托管在我的正常托管服务提供商处)。

在我的本地机器上,一切正常,但是当我部署到 OpenStack 服务器时,我收到错误:GET https://localhost:3000/api/room/name/Palace net::ERR_CONNECTION_REFUSED 在我对 Node.js 后端的 React 调用中。

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;
        }
}

我的 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}`));

我的 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 没有显示任何类型的条目

我尝试了多种预期的解决方案,但都没有奏效。 任何人都可以在设置中的某处看到错误?

【问题讨论】:

    标签: node.js reactjs nginx openstack mern


    【解决方案1】:

    通过将 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 并解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 2011-04-24
      • 1970-01-01
      • 2016-04-16
      • 2020-06-17
      • 2016-02-09
      相关资源
      最近更新 更多