Nginx Proxy inverso para múltiples aplicaciones en el mismo puerto
Estoy tratando de ejecutar una aplicación de Django y una aplicación de Angular en mi VPS utilizando Nginx. A continuación se muestra el código de mi archivo de configuración:
servidor {
escucha 80;
server_name www.the-patron.com the-patron.com;
charset utf-8;
location = /favicon.ico { access_log off; log_not_found off; }
location /staticfiles/ {
root /root/thepatron/The-Patron-Backend;
}
# Backend de Django
location /back/ {
include proxy_params;
proxy_pass http://unix:/root/thepatron/The-Patron-Backend/thepatron.sock;
}
# Frontend de Angular
location / {
proxy_pass http://localhost:4200/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
}
}
Aquí mi aplicación de Angular funciona bien y la de Django no lo hace. Si cambio location /backend/
a location /
en la línea 12 y location /
a location /frontend/
en la línea 18, ejecutaré la aplicación de Django mientras que la aplicación de Angular no se ejecutará.
¿Cómo puedo ejecutar ambas y cambiar la ubicación de cada una?
davy.ai
Para ejecutar la aplicación de Django y la aplicación de Angular en su VPS usando Nginx, puede actualizar su archivo de configuración de Nginx de la siguiente manera:
Aquí, hemos realizado los siguientes cambios:
location /
original para la aplicación de Angular, pero eliminamos las directivasproxy_set_header
ya que no son necesarias para servir una aplicación de Angular estática.location /api/
para la aplicación de Django, que será servido por un servidor Gunicorn que escucha en `http://localhost:8000`.try_files
al bloque de ubicación/
para servir los archivos estáticos de la aplicación de Angular.proxy_cache_bypass
ya que no se necesita en este escenario.Con esta configuración, debería poder ejecutar ambas aplicaciones con éxito accediendo a
http://<su-domino>/
para la aplicación de Angular yhttp://<su-domino>/api/
para la aplicación de Django. Tenga en cuenta que deberá iniciar su servidor Gunicorn por separado para servir la aplicación de Django.