Redirect 如何使用nginx将所有请求重定向到在特定端口上运行的应用程序?

Redirect 如何使用nginx将所有请求重定向到在特定端口上运行的应用程序?,redirect,nginx,Redirect,Nginx,我正在端口8000上运行应用程序,需要将端口80上的所有请求重定向到我的应用程序(端口8000)。我知道使用nginx是解决这个问题的方法。我修改了ngninx.conf如下: server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; in

我正在端口8000上运行应用程序,需要将端口80上的所有请求重定向到我的应用程序(端口8000)。我知道使用nginx是解决这个问题的方法。我修改了ngninx.conf如下:

    server {
            listen 80 default_server;
            listen [::]:80 default_server ipv6only=on;

            root /usr/share/nginx/html;
            index index.html index.htm;

            server_name localhost;

            location / {
                    proxy_pass http://127.0.0.1:8000;
                    try_files $uri $uri/ =404;
            } 
}

我现在可以将请求重定向到我的应用程序服务器,但找不到形式为xyz.com/abc的请求返回404。我认为上面的代码将匹配所有请求,并将所有内容重定向到端口8000上的应用程序。我做错了什么?

try\u files
根据服务器块中定义的
根目录检查文件是否存在。它在
location/
块中执行的操作是检查文件,然后在找不到文件时返回
404
。也许您希望您的配置看起来像这样

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /usr/share/nginx/html;
        index index.html index.htm;

        server_name localhost;

        location / {
            try_files $uri $uri/ @my_proxy;
        }

        location @my_proxy {
                proxy_pass http://127.0.0.1:8000;
        } 
}
在这里,如果
try\u files
找不到任何东西,它会将请求传递给运行在端口8000上的应用服务器。如果它仍然返回
404
,则该文件确实不存在