Node.js Can';t访问除/

Node.js Can';t访问除/,node.js,express,nginx,digital-ocean,Node.js,Express,Nginx,Digital Ocean,我在digitalocean上创建了一个基本的微滴,并为自己获得了一个域名。当我想要得到/,我会得到一个很好的“Hello World”响应,但是当我想要访问任何其他路由,例如“/x”,我会得到一个cannote{{request}}/x错误。我相信我的nginx配置有问题。我还使用LetsEncrypt设置了HTTPS。Nginx配置和下面的快速代码 Nginx配置: # HTTP - redirect all requests to HTTPS: server { listen 80

我在digitalocean上创建了一个基本的微滴,并为自己获得了一个域名。当我想要得到/,我会得到一个很好的“Hello World”响应,但是当我想要访问任何其他路由,例如“/x”,我会得到一个
cannote{{request}}/x
错误。我相信我的nginx配置有问题。我还使用LetsEncrypt设置了HTTPS。Nginx配置和下面的快速代码

Nginx配置:

# HTTP - redirect all requests to HTTPS:
server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;
    return 301 https://$host$request_uri;
}

# HTTPS - proxy requests on to local Node.js app:
server {
    listen 443;
    server_name your_domain_name;

    ssl on;
    # Use certificate and key provided by Let's Encrypt:
    ssl_certificate /etc/letsencrypt/live/your_domain_name/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain_name/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

    # Pass requests for / to localhost:8080:
    location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://localhost:8080/;
            proxy_ssl_session_reuse off;
            proxy_set_header Host $http_host;
            proxy_cache_bypass $http_upgrade;
            proxy_redirect off;
    }
}
这是index.js文件

var express = require('express')
var app = express()

app.get('/x', function(req, res) {
  res.send('x')
})

app.get('/', function (req, res) {
  res.send('hello world')
})

app.listen(8080, function() {console.log('App started')})

有什么想法吗?我希望在每次添加新路由时,都能够在不触碰nginx配置的情况下路由请求。

代理传递设置中删除尾部斜杠:

proxy_pass http://localhost:8080;
从:

如果在未指定URI的情况下指定了
proxy\u pass
,则请求URI将以处理原始请求时客户端发送的相同形式传递给服务器,或者在处理更改的URI时传递完整的规范化请求URI


proxy\u pass
设置中删除尾部斜杠:

proxy_pass http://localhost:8080;
从:

如果在未指定URI的情况下指定了
proxy\u pass
,则请求URI将以处理原始请求时客户端发送的相同形式传递给服务器,或者在处理更改的URI时传递完整的规范化请求URI


非常感谢-这就是我错过的!现在可以了。祝你有一个美好的一天,老兄,再次感谢你。非常感谢——这就是我错过的!现在可以了。祝你有美好的一天,再次感谢你。