Ho una singola app django-admin denominata myapp
che mi piacerebbe distribuire più istanze su diverse caselle fisiche, una per cliente. Tuttavia, mi piacerebbe che tutti fossero accessibili da un dominio simile, mydomain.com/customer1/myapp
.più app django con nginx proxy_pass e riscrivi
Ho manipolato impostazioni specifiche del proxy e ho provato più cose suggerite su SO, ma nessuna si adatta perfettamente al mio caso d'uso ... e poiché so molto poco su entrambi gli nginx
e django
sono in perdita!
mio nginx.conf corrente è:
server {
listen 80;
server_name myserver.com
location ^~ /static {
alias /path/to/static/files/;
}
# location/{
# proxy_pass http://127.0.0.1:8001;
# }
location ^~ /customer1/myapp/static {
alias /path/to/static/files/;
}
location /customer1/myapp {
rewrite ^/customer1/myapp/(/?)(.*) /$2 break;
proxy_pass http://127.0.0.1:8001;
}
}
posso arrivare alla schermata di login come previsto tramite myserver.com/customer1/myapp/admin
. Tuttavia, quando provo ad accedere, nginx riscrive il mio url su myserver.com/admin
che non è un url valido. Come posso impedire a nginx di riscrivere effettivamente l'url e modificare solo l'url passato a 127.0.0.1:8001
?
FWIW, sto usando gunicorn per servire con gunicorn -b 127.0.0.1:8001 -n myapp
. Se rimuovi il commento dalla posizione /
e rimuovi gli ultimi due blocchi di posizione, l'app funziona perfettamente.
Sono lontano dall'impostare questo approccio se ci sono alternative. L'obiettivo è evitare di modificare il codice django per ogni distribuzione e aggiungere semplicemente codice minimo a nginx.conf per le nuove distribuzioni.
Domande sulla distribuzione potrebbero essere più adatte per serverfault.com –
Non capisco, stai solo provando a fare django url reverse per generare/customerX/myapp/admin/invece di/admin /? – jpic
@jpic No, voglio che django veda solo gli URL radice. per esempio. '127.0.0.1: 8001/admin'. Suppongo di poterlo fare con nginx, ma non sono sicuro di come. E notato su 'serverfault.com', posterò lì se non capisco nulla qui, grazie. – Justin