nodejs 应用程序工作但 nginx 代理没有捕获它
nodejs application work but nginx proxy doesn't catch it
我的服务器上有一个 Nodejs 应用程序 运行,所以我想使用 Nginx 反向代理从一个不错的域名进行 API 调用,而不是输入 IP 和端口,我也生成了一个免费的 let's encrypt 证书用于此目的。
问题是如果我使用 IP 和端口反向服务器不工作然后如果我使用域名它会工作它给我一个 Nginx 模板测试页面反正这是我的配置 :
Nginx config
http {
log_format main '$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 {
}
}
my reverse proxy config and location
/etc/nginx/conf.d/api1.conf
后端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;
}
}
enter image description here
每当我尝试通过浏览器或邮递员查看 API 时,我都会看到此页面
不清楚您是否有域。如果你有一个,它应该指向服务器的 public ipv4 ip,然后创建一个代理到你的 nodejs 应用程序的 nginx 虚拟主机。
假设你的 public 服务器 ipv4 ip 地址是 1.2.3.4 并且你有一个像 nodejsappdomain.com 这样的域,那么 nodejsappdomain.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;
}
}
我的服务器上有一个 Nodejs 应用程序 运行,所以我想使用 Nginx 反向代理从一个不错的域名进行 API 调用,而不是输入 IP 和端口,我也生成了一个免费的 let's encrypt 证书用于此目的。
问题是如果我使用 IP 和端口反向服务器不工作然后如果我使用域名它会工作它给我一个 Nginx 模板测试页面反正这是我的配置 :
Nginx config http { log_format main '$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 {
}
}
my reverse proxy config and location
/etc/nginx/conf.d/api1.conf
后端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;
}
}
enter image description here
每当我尝试通过浏览器或邮递员查看 API 时,我都会看到此页面
不清楚您是否有域。如果你有一个,它应该指向服务器的 public ipv4 ip,然后创建一个代理到你的 nodejs 应用程序的 nginx 虚拟主机。
假设你的 public 服务器 ipv4 ip 地址是 1.2.3.4 并且你有一个像 nodejsappdomain.com 这样的域,那么 nodejsappdomain.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;
}
}