【问题标题】:Nginx: 404 Not Found error as reverse proxyNginx:404 Not Found错误作为反向代理
【发布时间】:2021-03-29 03:46:13
【问题描述】:

我正在尝试将 Nginx 配置为反向代理,让 Uvicorn 支持它。

当我尝试访问“example.com”时,它会返回主页,但会为所有静态文件提供 404。

当我尝试访问“example.com/blog”等任何其他端点时,它返回“404 not found”页面。

这里是 Nginx 配置:

server {

        root /var/www/example.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ =404;

                #custom config
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
                proxy_redirect off;
                proxy_buffering off;
                proxy_pass http://uvicorn;
        }


    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80;
        listen [::]:80;

        server_name example.com www.example.com;

    return 404; # managed by Certbot


}

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

upstream uvicorn {
    server unix:/tmp/uvicorn.sock;
 }

我应该做哪些更改才能使其正常工作?

【问题讨论】:

  • 删除try_files 声明。

标签: nginx nginx-reverse-proxy fastapi uvicorn


【解决方案1】:

根据@richard-smith 在评论中给出的建议,我尝试将这一行注释掉

location / {
                #try_files $uri $uri/ =404;  <-- here

                #custom config
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
                proxy_redirect off;
                proxy_buffering off;
                proxy_pass http://uvicorn;
        }

而且效果很好。它现在能够为所有端点提供服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    相关资源
    最近更新 更多