当前位置: 首页 > 知识库问答 >
问题:

nodejs应用程序可以工作,但nginx proxy无法捕获它

壤驷睿
2023-03-14

我有一个Nodejs应用程序在我的服务器上运行,所以我想使用Nginx反向代理从一个不错的域名进行API调用,而不是键入IP和端口,我还生成了一个免费的let’s encrypt证书用于此。

问题是,如果我使用IP和端口,反向服务器不工作;如果我使用域名,反向服务器工作;不管怎样,反向服务器会给我一个Nginx模板测试页面。以下是我的配置:

Nginx配置超文本传输协议{log_formatmain'$remote_addr-$remote_user[$time_local]"$Request"'$status$body_bytes_sent"$http_referer" ' '"$http_user_agent"$http_x_forwarded_for";

access_log  /var/log/nginx/access.log  main;

sendfile            on;
tcp_nopush          on;
tcp_nodelay         on;
keepalive_timeout   65;
types_hash_max_size 2048;

include             /etc/nginx/mime.types;
#include /etc/nginx/sites-enabled/*;
default_type        application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  _;
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

我的反向代理配置和位置

/etc/nginx/conf.d/api1。形态

后端API服务器{server_name API.domain.com;

location / {
    proxy_pass http://localhost:26423/all; #whatever port your app runs on
    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;
}

}

在此处输入图像描述

每当我试图从浏览器或邮递员那里看到API时,我就会看到这个页面

共有1个答案

曾飞雨
2023-03-14

目前还不清楚你是否拥有域名。如果你有一个,它应该指向服务器的公共ipv4 ip,然后创建一个代理你的nodejs应用的nginx vhost。

假设您的公共服务器ipv4 ip地址为1.2.3.4,并且您有一个类似NodeJSAPDomain的域。com,然后是nodejsap域。com应该指向1.2.3.4,nginx vhost应该是这样的:

服务器{80;

server_name nodejsappdomain.com www.nodejsappdomain.com;

location / {
    proxy_pass  http://127.0.0.1:nodejsapp_port;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
}

}

 类似资料:
  • 我开发了一个GWT应用程序,它在Firefox 26的开发过程中可以正常工作。它也可以在最新的Chrome和Firefox直到版本40中正常工作。 由于Firefox 41,我面临一个问题,这会导致整个页面覆盖。(使用整个URL[包含get参数]调用应用程序会阻止成功加载页面并显示空白页面)。 应用程序看起来冻结了,并在body标签的末尾添加了以下行: z索引:2147483647位于页面顶部,拒

  • 正在更新属性文件:/home/mehmet/works/netbeansprojects/hsm_java/build/built-clean.属性删除目录/home/mehmet/works/netbeansprojects/hsm_java/build 清洁: 初始化: 已创建目录:/home///netbeansprojects/hsm_java/build/empty 已创建目录:/hom

  • 这就是我正在做的。 部署此应用程序在 jboss 中失败,因为它在 tomcat 中部署,并且像 charm 一样工作。 我使用来自eclipse的动态web应用程序作为项目源。 将项目导出到war文件并在jboss服务器中部署也不起作用。 web.xml: Spring.xml: 控制器: 和 JBOSS 中的错误:

  • 我正在登录/注册,当我尝试使用应用程序停止的同一封电子邮件注册时,我添加了这一行 问题是,它仍然不工作,消息显示出来,但应用程序仍然停止工作。(但信息不同。) 这是我用于身份验证的代码

  • 问题内容: 如果我使用ActionBarSherlock 3.5.1,则一切正常且正常。但是,如果我想使用4.0 RC1,则会出现错误。 有任何想法吗? 问题答案: 确保将(和您的ActionBarSherlock项目的)目标API级别设置为15。为此: 将两个AndroidManifest.xml文件中的android:targetSdkVersion都更改为“ 15”。 使用项目属性(可能也包

  • Hadoop datanode无法与KDC通信,但kinit可以工作。 sudo kinit-k-t /etc/hadoop/conf/hdfs.keytabhdfs/symbio5.us-west-1.compute.internal@US-WEST-1.COMPUTE.INTERNAL UDP端口也可以。 nc symbio5.us-west-1.compute。内部-v-z-u 88 连接到