Le Touilleur Express

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

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/

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

  • Vis ma vie de Staff/Principal Engineer

    Suite de l’article précédent sur le Staff Engineer. Aujourd’hui, voyons un peu

    20 juillet, 2022
  • Inari

    Devenir Staff Engineer : comment et pourquoi ?

    Après une dizaine d’années en tant que développeur, vous serez un jour

    17 juillet, 2022
  • WeAreDevelopers 2022, conférence à Berlin – jour 1

    Il est 8h40, 19 degrés, vous êtes à Berlin. La queue dehors

    24 juin, 2022

Tweets @nmartignole

  • RT  @e_kaspersky : This report is the beginning of the investigation of this sophisticated attack. Today we publish the first results of the…

    3 hours ago
  • RT  @e_kaspersky : We've discovered a new cyberattack against iOS called Triangulation. The attack starts with iMessage with a malicious at…

    3 hours ago
  • RT  @fcamblor :  @aheritier   @agoncal  Je suis tombé sur ça : https://t.co/SnCEnkmi0F et https://t.co/pHOHOyT9Ob Je ne savais pas que le code é…

    4 hours ago

Mots clés

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

Le Touilleur Express

Blog par Nicolas Martignole

Contactez-moi : nicolas@touilleur-express.fr

Suivez-moi sur Twitter : @nmartignole

Copyright© 2008 - 2020 Nicolas Martignole | Tous droits réservés
  • A propos de l’auteur
  • A propos du Touilleur Express
  • Log In
  • My Account
  • My Profile
  • Reset Password

Le Touilleur Express