Configurações especiais em NGINX

De Wiki do Bernardino
Ir para: navegação, pesquisa

O proxy NGINX é um dos mais utilizados na Internet como frontend para os servidores WEB. Apesar da sua vasta implmentação existe muito pouca informação no que diz respeito à sua configuração.

Deixo aqui algumas receitas, para resolução de alguns problemas habituais.

Redirecionamento de uma ligação

redirecionamento de uma ligação, por exemplo para um sítio seguro:

# redirect http to https.
server {
  listen 80;
  server_name cloud.dgadr.pt;
  return 301 https://$server_name$request_uri;  # enforce https
}


Proteção de um servidor WEB interno, através de um portal SSL

# Sítio com owncloud (ssl/tls)
server {
        listen 443 ssl;
        ssl_certificate /etc/nginx/certs/server.crt;
        ssl_certificate_key /etc/nginx/certs/server.key;
  
        server_name nome_do_servidor.com;
 
        access_log  /var/log/nginx/nome_do_servidor.access.log;
  
        client_max_body_size 1000M; # Volume máximo de upload

        proxy_pass http://servidor_interno.local;
  
               ### Renviar informação do cabeçalho HTTP para a máquina interna  ####
               proxy_set_header        Accept-Encoding   "";
               proxy_set_header        Host            $host;
               proxy_set_header        X-Real-IP       $remote_addr;
               proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
               proxy_set_header        X-Forwarded-Proto $scheme;
               add_header              Front-End-Https   on;

               keepalive_timeout       60;
               ssl                     on;
 }

Portal para o Owncloud

server {
      listen 80;
      server_name www.example.com example.com;
      root /var/www/www.example.com/web;
      if ($http_host != "www.example.com") {
                rewrite ^ http://www.example.com$request_uri permanent;
      }
      # This is to avoid a "Request Entity Too Large" error
      client_max_body_size 1000M;
      index index.php index.html index.htm;
      dav_methods PUT DELETE MKCOL COPY MOVE;
      create_full_put_path on;
      dav_access user:rw group:rw all:r;
      location = /favicon.ico {
               log_not_found off;
               access_log off;
               expires max;
      }
      location = /robots.txt {
               allow all;
               log_not_found off;
               access_log off;
      }
      # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
      location ~ /\. {
               deny all;
               access_log off;
               log_not_found off;
      }
      location / {
               index index.php;
               try_files $uri $uri/ @webdav;
      }
      location @webdav {
               fastcgi_split_path_info ^(.+.php)(/.+)$;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               include /etc/nginx/fastcgi_params;
               #fastcgi_param HTTPS on;
               fastcgi_pass 127.0.0.1:9000;
      }
      location ~ \.php$ {
               try_files $uri =404;
               include /etc/nginx/fastcgi_params;
               fastcgi_pass 127.0.0.1:9000;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               fastcgi_index index.php;
      }
}