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.

  • Demande de timeout d'attente avec nginx, licorne et rails
  • Un nombre optimal de process de licorne CPU
  • Comment puis-je configurer nginx pour servir des hotes virtuels avec des rails (licorne / passager) et php-fpm
  • Ruby: Est-il logique d'utiliser REE avec Unicorn?
  • NGINX Unicorn 504 Gateway Time-out
  • nginx Indication d'autorisation refusée
  • Sudo n'effectuera pas de command comme autre user
  • Utilisation de Upstart pour gérer Unicorn w / rbenv + bundler binstubs w / ruby-local-exec shebang
  • Nginx et licorne
  • Unicorn Shared Socket
  • Configuration nginx pour le deployment subdir de rails
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.