Nginx无法正确代理nodejs

问题描述:

我目前在我的nginx服务器上设置了ssl。我也有一个节点应用程序在端口80上运行。我试图将代理的所有请求都反向代理到nginx的/api路由,但是它没有正确执行。Nginx无法正确代理nodejs

当我做一个curl localhost:8080它正确显示Welcome to hooq

但是,当我对直接网络服务器IP地址执行curl命令时,它是hooq.digitalfolks.sg/api,它抛出了一个404错误,当我找不到路由时,它在节点中设置了错误。

这里是我的nginx的conf此刻

server { 
     listen 443 ssl; 

     server_name hooq.digitalfolks.sg; 

     ssl_certificate /etc/letsencrypt/live/hooq.digitalfolks.sg/fullchain.pem; 
     ssl_certificate_key /etc/letsencrypt/live/hooq.digitalfolks.sg/privkey.pem; 

     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
     ssl_prefer_server_ciphers on; 
     ssl_dhparam /etc/ssl/certs/dhparam.pem; 
     ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; 
     ssl_session_timeout 1d; 
     ssl_session_cache shared:SSL:50m; 
     ssl_stapling on; 
     ssl_stapling_verify on; 
     add_header Strict-Transport-Security max-age=15768000; 

     location/{ 

     } 

     location ~ /api { 
       proxy_pass http://127.0.0.1:8080; 
     } 

     location ~ /.well-known { 
       allow all; 
     } 

} 


server { 
    listen 80; 
    server_name hooq.digitalfolks.sg; 
    return 301 https://$host$request_uri; 
} 

有人能帮助我吗?

如果您的节点应用好好尝试一下希望在路线/api然后尝试改变这一点:

location ~ /api { 
      proxy_pass http://127.0.0.1:8080; 
    } 

这样:

location ~ /api { 
      rewrite ^/api/(.*)$ /$1 break; 
      proxy_pass http://127.0.0.1:8080; 
    } 

您不包括您的节点应用程序的代码因此无法确定是否属于这种情况,但这是反向代理配置中的常见问题 - 请参阅此答案以了解更多详细信息:

+0

我的节点api基本上是侦听根路由。也就是'app.use(“/”,rootController)' – Nate