Путь к местоположению nginx с proxy_pass

У меня возникла следующая проблема: я пытаюсь разместить приложение Django с сервером gunicorn на моем VPS под управлением Nginx. Мой конфиг nginx выглядит так:

upstream app_name {
    server unix:/path/to/socket/file.sock fail_timeout=10;
}

server {

   listen 80 default_server;
   listen[::]:80 default_server ipv6only=on;
   root /webapps/;
   server_name my_hostname.com;

   location / {
      proxy_set_header Host $http_host;
}

   location /appname/ {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;

      proxy_pass http://app_name;

}

}

Однако, когда я перехожу к my_server.com/appname/ я постоянно получаю 404 ошибку. Я все еще новичок в Nginx, кто-то может указать мне правильное направление, как установить proxy_pass для /appname/ дорожка? Я должен отметить, что когда место для /appname/ заменяется на / Приложение Django работает нормально.

1 ответ

Решение

Вам просто нужен косая черта для proxy_pass:

proxy_pass http://app_name/;

это поможет вам вырезать префикс "appname", чтобы конфигурация выглядела так:

upstream app_name {
    server unix:/path/to/socket/file.sock fail_timeout=10;
}

server {

   listen 80 default_server;
   listen[::]:80 default_server ipv6only=on;
   root /webapps/;
   server_name my_hostname.com;

   location /appname/ {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;

      proxy_pass http://app_name/;

}
Другие вопросы по тегам