2016-07-26 39 views
1

我正在端口8000上運行一個應用程序,並且需要將來自端口80的所有請求重定向到我的應用程序(端口8000)。我明白使用nginx是解決問題的方法。我修改ngninx.conf如下:如何使用nginx將所有請求重定向到在特定端口上運行的應用程序?

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

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上運行的要求,你的應用程序服務器如果仍然返回404則文件確實不存在。

相關問題