nginx运行node程序,路由跳转是404,静态文件可以正常加载

nginx的配置代码是这样的

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                root /home/ubuntu/card/public;
                try_files $uri $uri/ =404;
                proxy_pass http://127.0.0.1:3000;
        }
        
}

node程序本身没有问题

阅读 5.3k
2 个回答

我的理解是try_files 如果不成功,应该让express服务器尝试响应

location / {

            root /home/ubuntu/card/public;
            try_files $uri $uri/ @proxy;
    } 

location @proxy {

proxy_pass http://127.0.0.1:3000;  

}

假设你的目录/home/ubuntu/card/public下有个叫uploads的文件夹,nginx配置如下

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _;

    location / {
        proxy_pass http://127.0.0.1:3000/;
    }

    location /uploads {
        root /home/ubuntu/card/public/;
        index index.html index.htm index.nginx-debian.html;
        try_files $uri $uri/ =404;
    }
}

那么访问http://localhost/会跳到nodejs,http://localhost/uploads/会访问/home/ubuntu/card/public/uploads下的静态文件。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题