Le Touilleur Express

  • Accueil
  • A propos de l’auteur
  • A propos du Touilleur Express
Next Previous

nginx en frontal d’un serveur play

23 août, 2012

nginx (prononcez n-jean-x) est un serveur web léger et un reverse proxy HTTP, à la fois simple et rapide à configurer. Je m’en sers en frontal de mes services comme pour l’eXpress-Board par exemple. L’application Play! Framework tourne sur le port 9000 sur la machine, et nginx est démarré sur le port 80. Il route les demandes vers l’application Play! automatiquement. Il y a plusieurs intérêts à avoir un reverse proxy. Lorsque le site est down, vous pouvez rediriger vos clients vers une page d’erreur propre. Vous pouvez aussi configurer un load-balancer, afin d’avoir 2 applications Play! derrière un reverse proxy nginx. Play! étant un framework sans état côté serveur, vous pouvez ainsi mettre en place en quelques minutes une petite infrastructure digne d’une banque.

Voyons comment configurer un serveur nginx sur votre serveur OVH favori (j’aime ces gars, vraiment) ou Gandi (je vous aime aussi).

Installez tout d’abord nginx avec apt-get ou urpmi, cela devrait prendre quelques instants.

Ouvrez ensuite la configuration située en général dans le répertoire /etc/nginx sur votre serveur. Je vous conseille de copier /etc/sites-available/default vers un nouveau fichier, et de mettre à jour le lien symbolique sur /etc/sites-enabled.

Voici un exemple de configuration pour un site de voyages à fort trafic :

server {
        listen 80;
        server_name  www.mysuperwebsite.com;
        access_log /var/log/nginx/mysuperwebsite.access.log;
        error_log /var/log/nginx/mysuperwebsite.error.log;
        # Thanks Aurelien
        proxy_http_version 1.1;

        if ($request_method !~ ^(GET|HEAD|POST)$ ) {
                return 444;
        }

        # Redirect to Play Framework all pages, set a cache for performance
        location / {
                proxy_pass http://127.0.0.1:9000;
        }

        # Store in cache all the Play2 assets (css, js)
        location /assets {
               proxy_pass http://127.0.0.1:9000;
               proxy_cache cache;
               proxy_cache_valid 1h;
               expires max;
        }

        #error_page 400 402 403 405 406 407 408 409 410 411 412 413 414 415 416 417 500 501 502 503 504 505 506 507 /error.html;

        location = /error.html {
                root /var/www/nginx-default;
        }

        error_page 404 /404.html;

        location = /404.html {
                root /etc/nginx/mysuperwebsite_errors_page ;
        }

    # restrict with HTTP password 
        location /sample_admin {
                proxy_pass http://127.0.0.1:9000;
                auth_basic "Restricted";
                auth_basic_user_file htpasswd;
        }
}

Pour l’eXpress-Board, qui tourne avec Play 1.2.4, ma configuration est encore plus simple :

server {
        listen   95.142.163.172:80;
        server_name  express-board.fr;
        proxy_http_version 1.1;

        location / {
                        proxy_pass              http://127.0.0.1:9000;
                        proxy_set_header        Host $host;
                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header        X-Forwarded-Host $host;
                        proxy_set_header        X-Forwarded-Port $server_port;
                        proxy_set_header        X-Forwarded-Proto http;
        }
}

Pour terminer, vous pourrez aussi trouver dans la documentation de Play! Framework v1 différents exemples avec lighthttpd ou Apache.

Crédit photo: http://www.flickr.com/photos/onus-technologies/7843311058/sizes/q/in/photostream/

0 no like

Articles similaires:

Default ThumbnailJava et JFreeChart sous Unix sans serveur X, sans écran Default ThumbnailPlay! Framework est disponible officiellement sur Heroku Default ThumbnailLa FreeBox devient serveur d'impression et IPv6 Default ThumbnailRevue du livre Play Framework Cookbook d’Alexander Reelsen
  • Aurélien Maury 23 août 2012 at 11 h 04 min

    Si, comme je le suppose, le serveur Play parle en HTTP 1.1, je conseille fortement de rajouter l’option de conf:

    proxy_http_version 1.1;

    Car Nginx communique par défaut en 1.0, ce qui peut poser des problèmes erratiques pour les connexions longues, type websocket ou long-polling. Détails ici.

  • Mikael 26 août 2012 at 11 h 15 min

    Est il possible de servir le contenu static avec ngix et de rediriger le reste du traffique vers Play?
    J’imagine que ngix devrais etre plus performant que play pour ceci.

  • Nicolas Martignole 26 août 2012 at 23 h 57 min

    Il est possible de configurer nginx afin qu’il cache les assets comme tout ce qui est css/js/images par exemple

Derniers articles

  • L’instant T où tu poses ta dém…

    Retour d’expérience sur la démission et le moment où vous devez quitter une entreprise.

    6 likes

    24 octobre, 2024
  • The « Robinson » projection – comprendre son système d’information

    Nous sommes en juillet 2022 chez Doctolib. Je travaille sur un projet

    5 likes

    22 octobre, 2024
  • Réussir son démarrage comme Staff/Principal Engineer dans une nouvelle entreprise

    Je prépare une présentation avec mon collègue Théotime pour la conférence Cloud

    3 likes

    6 octobre, 2024

Mots clés

Apple (32) Architecture (14) Big Data (5) Conference (8) Devoxx (55) Dev Web (37) Doctolib (2) geekevent (1) groovy (2) Innoteria (11) Java (517) Linux (10) Non classé (15) Perso (266) Recrutement (2) Scala (30) scrum (43) Société (3) Staff Engineer (5) Startup (21) Web 2.0 (67)

Le Touilleur Express

Blog par Nicolas Martignole

Contactez-moi : nicolas@touilleur-express.fr

Suivez-moi sur X (Twitter) : @nmartignole

Copyright© 2008 - 2024 Nicolas Martignole | Tous droits réservés
  • A propos de l’auteur
  • A propos du Touilleur Express
  • Reset Password

Le Touilleur Express