KernelCoffee

Another sip of code ?

Nginx : Configuration De Base Et Redirection SSL

| Comments

Quand j’installe des services sur mon serveur, j’aime quand ceux-ci aient un minimum de cohérence et sécurité. Mon premier soucis est de pouvoir avoir plusieurs sous-domaines et lorsque le sous-domaine est incorrect alors on est redirigé vers une page spécifique (La face visible du serveur par exemple).

Je vais donc exposer mes fichiers de configurations nginx avec leur comportements respectifs.

nginx.conf (nginx.conf) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
worker_processes  4;

events {
    worker_connections  1024;
}

http {
    # chemin de passenger
    passenger_root /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12;
    passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby;

    # configuration de nginx
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  30;

    gzip  on;
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    # Inclusion de l'ensemble des fichiers de configuration des different sites web
    include /opt/nginx/conf/site-enabled/*;

    # redirection des sous-domaine vers le site principal.
    server {
        listen      80;
        server_name *.kernelcoffee.org;
        rewrite     ^  http://kernelcoffee.org permanent;
    }

    # redirection des sous-domaine ssl vers le site principal.
    server {
        listen 443 ssl;
        server_name *.kernelcoffee.org;

        rewrite     ^  http://kernelcoffee.org permanent;

        ssl on;
        ssl_certificate /etc/ssl/certs/ssl.crt;
        ssl_certificate_key /etc/ssl/certs/ssl.key;
        ssl_session_timeout  5m;
    }
}

Toute la magie est contenue dans le server_name et le rewrite qui redirige l’utilisateur vers l’emplacement désiré.

1
2
3
4
5
6
# redirection des sous-domaine vers le site principal.
server {
  listen      80;
  server_name *.kernelcoffee.org;
  rewrite     ^  http://kernelcoffee.org permanent;
}

Bien sur on peut le combiner avec une configuration SSL. En mettant ces lignes a la fin du fichier de configuration de nginx on s’assure que n’importe quels configuration de site ne soit pas en conflit avec le comportement initial de nginx.

site (site) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
    listen      80;
    server_name <sous-domaine>.<domaine>;
    rewrite     ^   https://$server_name$request_uri? permanent;
}

server {
    listen 443 ssl;
    server_name <sous-domaine>.<domaine>;
    passenger_enabled on;
    root /chemin/du/site/web/;

    ssl on;
    ssl_certificate /chemin/du/certificat.crt;
    ssl_certificate_key /chemin/du/certificat.key;
    ssl_session_timeout  5m;
}

Ce fichier ci-dessus permet de forcer la redirection SSL d’un site web tout en gardant le chemin URL.

Comments