Applications multiples Nginx + Unicorn avec location – routing

Je voudrais exécuter plusieurs applications de rails en utilisant simplement des blocs d'location différents. Différents travailleurs de licorne sont démarrés et configurés, ils fonctionnent très bien.

Chaque application est sous le même dossier: /var/www/<app> , donc j'ai configuré nginx comme ceci:

 root /var/www; location /app1/ { root /var/www/app1/public; try_files $uri/index.html $uri.html $uri @app1; } location /app2/ { root /var/www/app2/public; try_files $uri/index.html $uri.html $uri @app2; } 

Mon problème est que w / this ruleset une request (comme mydomain / app1 / check) entre dans mon app1 comme ceci: Started GET "/app1/check" for ... Je voudrais juste Started GET "/check" for ...

Que dois-je changer sur ma configuration?

3 Solutions collect form web for “Applications multiples Nginx + Unicorn avec location – routing”

Si vous ne souhaitez pas modifier vos parameters en amont (quoi que vous fassiez dans vos locations @app ), une simple rewrite peut vous aider:

 location /app1/ { root /var/www/app1/public; rewrite ^/app1/(.*)$ /$1 break; try_files /app1/$uri/index.html /app1/$uri.html /app1/$uri @app1; } 

Le paramètre de break pour la rewrite entraînera nginx à réécrire l'URI sans réorienter ou redirect la requête.

N'oubliez pas d'append le préfixe /app1/ à vos noms try_files , car $uri sera déjà réécrit au moment où try_files s'exécute.

Comment avez-vous configuré votre path d'actif dans ce cas?

Le path de mes actifs est

 <host>/assets/<asset_name>.css 

mais le path correct est:

 <host>/<app_name>/assets/<asset_name>.css 

Ma configuration est principalement la même que celle ci-dessus.

 upstream app1 { # Path to Unicorn SOCK file, as defined previously server unix:/tmp/unicorn.app1.sock fail_timeout=0; } upstream app2 { # Path to Unicorn SOCK file, as defined previously server unix:/tmp/unicorn.app2.sock fail_timeout=0; } location /app1/ { root /home/<user_app1>/<app1>; rewrite ^/app1/(.*)$ /$1 break; try_files $uri @app1; } location /app2/ { root /home/<user_app2>/<app2>; rewrite ^/app2/(.*)$ /$1 break; try_files $uri @app2; } location @app1 { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app1; } location @app2 { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app2; } 

Je fais cela avec nginx, uwsgi et django / wsgi – la key est:

 location ~* /tiny/(.+?)/ { include uwsgi_params; uwsgi_pass unix:/run/uwsgi/tiny_$1.sock; uwsgi_param SCRIPT_NAME /tiny/$1; uwsgi_modifier1 30; } 

J'habite les applications comme "noms"; c'est-à-dire / tiny / foobar /, mais l'application voit le path sous / foobar / en raison du changement SCRIPT_NAME ci-dessus. le modificateur1 est particulier à WSGI (IIRC), donc vous ne pouvez pas appliquer votre configuration.

  • Les travailleurs de licorne disparaissent
  • Unicorn reprend avec le même PID sur USR2
  • Utilisation de Upstart pour gérer Unicorn w / rbenv + bundler binstubs w / ruby-local-exec shebang
  • Ecriture d'un file de configuration upstart pour Unicorn
  • Expliquez l'équilibrage de charge avec Nginx comme si j'en ai cinq ans
  • Surveillance des requests lentes de nginx / licorne
  • Est-ce que l'IO lent sur mon server cloud provoque mes problèmes de redémarrage du server lent?
  • L'application a été pressée, puis les servers ont été détenus. J'ai ajouté 8 servers de plus, toujours trop lent
  • Comment sécuriser correctement le server Unicorn / RoR sur ubuntu? Ou, durcir la stack d'application RoR?
  • Comment débuter pourquoi mon server a un retard de 3s sur chaque request nginx / unicorn?
  • Problème avec la configuration nginx et les servers en amont
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.