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

时间:2016-07-26 09:54:20

标签: redirect nginx

我在端口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上的应用程序。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

try_files检查服务器块中定义的root是否存在文件。它在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_files找不到任何内容,它会将请求传递给在端口8000上运行的app服务器。如果它仍然返回404那么该文件确实不存在