Este guia se refere ao Ubuntu 16.04, as outras versões serão feitas posteriormente.

1. Instalação do Nginx
Primeiramente vamos atualizar os repositórios:

sudo apt-get update

Depois vamos instalar o nginx:

sudo apt-get install nginx

Em seguida verificamos a versão do nginx com o comando:

nginx -v

Se obtivermos pelo menos a versão 1.10.0, está tudo certo.

2. Instalação do MySQL
O primeiro passo é instalar o servidor mysql:

sudo apt-get install mysql-server

Obviamente, é preciso preencher a senha do usuário root, com a qual deseja acessar o mysql posteriormente.
Para que as páginas PHP funcionem, você precisa instalar a versão 5 do php e o conjunto de instruções mysql correspondente:

sudo apt-get install php-fpm php-mysql

Para aumentar a segurança, é recomendável desativar a funcionalidade onde, se o php não encontrar o arquivo referenciado, ele executa o mais semelhante:

sudo nano /etc/php/7.0/fpm/php.ini

É necessário encontrar a parte onde está o cgi.fix_pathinfo, remover o ponto e vírgula (;) da frente, alterar o valor para 0 e salvar tudo.

cgi.fix_pathinfo=0

Para alterar o limite de upload, é preciso encontrar a linha upload_max_filesize e alterar o valor para o desejado (megabyte=M, gigabyte:G)

upload_max_filesize = 1G

Para alterar o limite de download, encontre e modifique a linha:

post_max_size = 1G

Feito isso, salve o arquivo e reinicie o php-fpm:

sudo systemctl restart php7.0-fpm

3. Configuração do Nginx
O arquivo de configuração básico pode ser editado assim:

sudo nano /etc/nginx/sites-available/default

O arquivo deve ficar parecido com isto por padrão:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }
}

Para HTTP simples, modifique o arquivo conforme abaixo:

server {
 listen 80 default_server;
 listen [::]:80 default_server;

 root /var/www/meusite;

 index index.php index.htm index.nginx-debian.html;

 server_name endereco_do_seu_site;

 location ~ \.php$ {
 try_files $uri =404;
 fastcgi_pass unix:/run/php/php7.0-fpm.sock;
 include fastcgi_params;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 }

 location / {
 try_files $uri $uri/ /index.php?$args;
 }

 location ~ /\.ht {
 deny all;
 }
}

Para HTTPS (SSL) e HTTP2, modifique o arquivo conforme abaixo (se você não tem certificado SSL, mais abaixo encontrará um guia de como obter um gratuitamente por um ano):

server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;

root /var/www/meusite;

index index.php index.html index.htm;

server_name endereco_do_seu_site;

location / {
try_files $uri $uri/ /index.php?$args;
}

# indicação do local dos arquivos SSL se criados com letsencrypt
ssl on;
ssl_certificate /etc/letsencrypt/live/endereco_do_seu_site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/endereco_do_seu_site/privkey.pem;

ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;

# indicação dos parâmetros dh conforme descrito abaixo
ssl_dhparam {caminho para o arquivo dhparams.pem};

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

server {
listen 80;
listen [::]:80;
server_name endereco_do_seu_site;
return 301 https://$server_name$request_uri;
}

O arquivo deve ser salvo e depois o nginx reiniciado:

sudo service nginx restart

4. Instalação do PHPMyadmin
Você pode instalar o pacote assim:

sudo apt-get install phpmyadmin

Durante a instalação, ele pedirá a senha do usuário root do mysql, forneça-a. A próxima pergunta é a senha da conta root do phpmyadmin. Forneça-a e, quando solicitado, confirme-a.
Depois, para acessar o phpmyadmin pelo seu site, é necessário criar um link simbólico:

sudo ln -s /usr/share/phpmyadmin /var/www/meusite/phpmyadmin

Depois você pode acessar o phpmyadmin no seu site:

http://meusite.com.br/phpmyadmin

5. Solicitação de certificado SSL

No caso de você ainda não possuir certificado SSL, uma boa solução para esse problema é o serviço StartSSL, dentro do qual você pode solicitar por 1 ano para 5 domínios. (depois você pode solicitar novamente) – ATUALIZAÇÃO: O StartSSL parou de funcionar em janeiro de 2018, recomendo o Let’s Encrypt em vez dele.

5.1 Solicitação de SSL Let’s Encrypt

Podemos solicitar SSL Let’s Encrypt com a ajuda do Certbot, que pode ser instalado e usado conforme abaixo:

sudo apt-get update

sudo apt-get install software-properties-common

sudo add-apt-repository ppa:certbot/certbot

sudo apt-get update

sudo apt-get install python-certbot-nginx

Quando terminar, execute o Certbot no modo de criação manual de certificado (não queremos que ele mexa no nosso arquivo de configuração nginx bem editado)

sudo certbot --nginx certonly

O processo é bastante intuitivo; é preciso fornecer o endereço de email e o domínio para o qual deseja solicitar o certificado SSL. Feito isso, ele informará a data de expiração e o local do arquivo de certificado:

/etc/letsencrypt/live/endereco_do_seu_site/

A configuração do nginx deve ser feita conforme o item 3, inserindo os nomes de arquivo já existentes.

5.2 Verificação da conexão SSL

É recomendável verificar se configuramos corretamente o uso de SSL no servidor web, o que pode ser feito no site https://www.ssllabs.com/ssltest/analyze.html.

Feito isso, tudo deve funcionar perfeitamente 🙂