2016-07-26 8 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 то файл действительно не существует.

Смежные вопросы