gpt4 book ai didi

node.js - nginx如何代理express(node.js)?为什么res.data是index.html?

转载 作者:太空宇宙 更新时间:2023-11-03 22:39:59 26 4
gpt4 key购买 nike

我用Express框架编写了一个Node.js服务器项目。在本地主机上一切正常。但是当我在远程服务器上构建时出现一些问题。(centos 6.5;ngnix 1.11.6;express 4.14.1;node 6.9。 5)

  1. 这是 nginx.conf。

     listen       80;
    server_name www.cheeseyu.cn cheeseyu.cn;

    #charset koi8-r;

    #access_log logs/host.access.log main;

    location / {
    proxy_pass http://127.0.0.1:3009;
    proxy_redirect off;
    }

    location ~ .*.(gif|jpg|jpeg|png|bmp|swf|js|css|woff|ttf|TTF|svg)$ {
    root /home/www/blog;
    if (-f $request_filename) {
    expires 100d;
    break;
    }
    }

    error_page 405 =200 @405;
    location @405 {
    proxy_method GET;
    proxy_pass http://static_resource;
    }

    #error_page 404 /404.html;
  2. 有xhr的信息。 enter image description here enter image description here

  3. 这是node.js。

var express = require('express');
var path = require('path');
var app = express();
var bodyParser = require('body-parser');
var routes = require('./routes');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.all('', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "");
res.header("Access-Control-Allow-Headers", "X-Requested-With,Content-Type");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("Content-Type", "application/json;charset=utf-8");
next();
});

routes(app);
app.set('port', process.env.PORT || 3009);
app.listen(app.get('port'), function() {
console.log('Express server listening on port ' + app.get('port'));
});

所以我的问题是:
  • a.即使我停止了后台服务器,为什么状态还是 200?
  • b.为什么响应数据是html(内容是index.html)?
  • c.为什么我使用帖子时状态仍然是405?我已经尝试过我找到的方法。
  • d.为什么状态是200,但请求后不使用'.then',而是使用“.catch”?
  • e. nginx代理如何表达(node.js)?(我认为最重要的问题是nginx 没有将请求代理到 Node 服务器。)

如果您想了解详细回复,可以访问cheesyu.cn
谢谢你的帮助:)

最佳答案

我可以向你展示我在 nginxconf 中使用的内容

    location / {
proxy_pass http://your-domain.com:3009;
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 应用程序所需要的。作为流程经理,我使用 stableloop。重要提示:您还必须检查您的 Node 进程正在运行的端口并使其适合您的端口。

希望对您有所帮助。

(并且您必须在所有更改后$~ service nginx reload)

关于node.js - nginx如何代理express(node.js)?为什么res.data是index.html?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45184088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com