2017-04-12 42 views
1

我目前在我的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; 
} 

有人能幫助我嗎?

回答

1

如果您的節點應用好好嘗試一下希望在路線/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