Instalação do Nginx via YUM
1. Preparativos
Antes de instalar, verifique o status do firewall e o SELinux. É recomendado desativar o firewall ou liberar as portas 80 e 443.
# Verificar firewall
systemctl status firewalld.service
# Verificar SELinux
getenforce
Se necessário, libere as portas:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
2. Configuração do Repositório YUM
Crie um arquivo de repositório para o Nginx:
cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
3. Instalação do Nginx
Instale o pacote do Nginx usando YUM. Por padrão, a versão estável mais recente será instalada.
yum -y install nginx
# Verificar a versão instalada
nginx -v
Para instalar a versão de desenvolvimento (mainline), habilite o repositório correspondente antes da instalação (yum-config-manager --enable nginx-mainline). No entanto, não é recomendado para ambientes de produção.
Inicie e habilite o serviço Nginx para iniciar na inicialização do sistema:
systemctl start nginx
systemctl enable nginx
4. Teste de Acesso
Acesse o Nginx através do navegador, utilizando o IP do seu servidor (ex: http://172.24.8.71/).
5. Informações Adicionais
Visualize os detalhes de compilação e os módulos incluídos:
# Ver detalhes da compilação e módulos
nginx -V
# Listar arquivos instalados pelo pacote Nginx
rpm -ql nginx
# Listar arquivos de configuração do pacote Nginx
rpm -qc nginx
Instalação do Nginx via Compilação de Código-Fonte
1. Dependências
Instale os pacotes de desenvolvimento necessários:
yum -y install gcc gcc-c++ wget autoconf pcre pcre-devel openssl openssl-devel net-tools vim ntp screen lrzsz bash-completion bash-completion-extras lvm2 make automake epel-release tree zlib zlib-devel libtool
Observação: Bibliotecas como zlib são essenciais para o módulo ngx_http_gzip_module (compressão), e openssl é necessário para o módulo ngx_http_ssl_module (suporte HTTPS).
2. Compilação e Instalação
Crie um usuário para o Nginx, baixe o código-fonte, descompacte e configure os parâmetros de compilação antes de compilar e instalar.
# Criar usuário e grupo
useradd -s /sbin/nologin -M nginx
# Baixar código-fonte (exemplo com versão 1.17.8)
wget http://nginx.org/download/nginx-1.17.8.tar.gz
# Descompactar
tar -xvf nginx-1.17.8.tar.gz
# Entrar no diretório
cd nginx-1.17.8/
# Configurar parâmetros de compilação
./configure \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--group=nginx \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-log-path=/var/log/nginx/access.log \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--lock-path=/var/run/nginx.lock \
--pid-path=/var/run/nginx.pid \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/bin/nginx \
--user=nginx \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_v2_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module
# Compilar e instalar
make && make install
# Verificar instalação e estrutura de diretórios
nginx -V
tree /usr/local/nginx/
Estrutura de diretórios após compilação:
| conf | Diretório de arquivos de configuração do Nginx |
|---|---|
| html | Diretório para arquivos de páginas estáticas |
| logs | Diretório para logs |
| sbin | Diretório para o executável do Nginx |
3. Gerenciamento do Serviço
Certifique-se de que o diretório de binários do Nginx esteja no PATH do sistema ou adicione-o. Crie o diretório de cache se não existir.
# Exibir PATH atual
echo $PATH
# Criar diretório de cache
mkdir -p /var/cache/nginx/
# Verificar o executável
ll /usr/local/bin/nginx
Comandos para gerenciar o serviço Nginx:
# Iniciar
nginx
# Parar (graceful shutdown)
nginx -s stop
# Recarregar configuração
nginx -s reload
# Reiniciar (não recomendado, prefira reload)
nginx -s reopen
# Parar (imediato)
nginx -s quit
# Testar sintaxe da configuração
nginx -t
# Testar com um arquivo de configuração específico
nginx -t -c 【file】
# Verificar processos Nginx
ps aux | grep nginx
# Verificar porta 80
netstat -ano | grep 80
4. Inicialização Automática na Inicialização
Crie um arquivo de serviço systemd para o Nginx:
vi /usr/lib/systemd/system/nginx.service
# Conteúdo do arquivo nginx.service:
# [Unit]
# Description=nginx - high performance web server
# Documentation=http://nginx.org/en/docs/
# After=network-online.target remote-fs.target nss-lookup.target
# Wants=network-online.target
#
# [Service]
# Type=forking
# PIDFile=/var/run/nginx.pid
# ExecStart=/usr/local/bin/nginx -c /usr/local/nginx/conf/nginx.conf
# ExecReload=/bin/kill -s HUP $MAINPID
# ExecStop=/bin/kill -s TERM $MAINPID
#
# [Install]
# WantedBy=multi-user.target
# Recarregar o systemd para reconhecer o novo serviço
systemctl daemon-reload
# Iniciar o serviço Nginx
systemctl start nginx.service
# Habilitar inicialização automática
systemctl enable nginx.service
Comandos de gerenciamento do serviço via systemd:
systemctl start nginx.service # Iniciar
systemctl stop nginx.service # Parar
systemctl enable nginx.service # Habilitar inicialização automática
systemctl disable nginx.service # Desabilitar inicialização automática
systemctl status nginx.service # Verificar status
systemctl restart nginx.service # Reiniciar
systemctl list-units --type=service # Listar todos os serviços
5. Teste de Acesso
Acesse o Nginx através do navegador, utilizando o IP do seu servidor (ex: http://172.24.8.71/).
6. Opções de Compilação
Visualize as opções de compilação disponíveis com:
./configure --help
Opções comuns de compilação:
| --prefix=/etc/nginx | Diretório de instalação do programa |
|---|---|
| --sbin-path=/usr/sbin/nginx | Nome do executável Nginx |
| --modules-path=/usr/lib64/nginx/modules | Caminho para os módulos do Nginx |
| --conf-path=/etc/nginx/nginx.conf | Caminho do arquivo de cnofiguração principal do Nginx |
| --error-log-path=/var/log/nginx/error.log | Caminho do log de erros |
| --http-log-path=/var/log/nginx/access.log | Caminho do log de acesso |
| --pid-path=/var/run/nginx.pid | Caminho do arquivo PID |
| --lock-path=/var/run/nginx.lock | Caminho do arquivo de lock |
| --http-client-body-temp-path=/var/cache/nginx/client_temp | Cache temporário para corpo de requisição do cliente |
| --http-proxy-temp-path=/var/cache/nginx/proxy_temp | Cache temporário para proxy |
| --http-fastcgi-temp-path=/var/cache/nginx/proxy_temp | Cache temporário para FastCGI |
| --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp | Cache temporário para uWSGI |
| --http-scgi-temp-path=/var/cache/nginx/scgi_temp | Cache temporário para SCGI |
| --user=nginx | Usuário para execução do processo Nginx |
| --group=nginx | Grupo para execução do proecsso Nginx |
| --with-cc-opt | Opções adicionais para o compilador C (CFLAGS) |
| --with-ld-opt | Opções adicionais para o linker (LDFLAGS) |
Diretórios e Módulos do Nginx
1. Diretórios Relevantes
Estrutura de diretórios comum após instalação via YUM:
/etc/nginx, /etc/nginx/nginx.conf, /etc/nginx/conf.d |
Arquivos de configuração do Nginx |
|---|---|
/etc/nginx/fastcgi_params, /etc/nginx/scgi_params, /etc/nginx/uwsgi_params |
Configurações para FastCGI, SCGI, uWSGI |
/etc/nginx/mime.types |
Mapeamento de tipos MIME para HTTP |
/usr/sbin/nginx |
Comando executável do Nginx |
/var/cache/nginx |
Diretório de cache do Nginx |
/var/log/nginx |
Diretório de logs do Nginx |
/usr/share/nginx/html |
Diretório padrão para a página web |
2. Módulos do Nginx
Os módulos do Nginx podem ser oficiais ou de terceiros. Eles adicionam funcionalidades ao servidor.
ngx_http_core_module |
Funcionalidades básicas do HTTP |
|---|---|
ngx_http_access_module |
Controle de acesso |
ngx_http_gzip_module |
Compressão de conteúdo (gzip) |
ngx_http_fastcgi_module |
Interface com aplicações FastCGI (ex: PHP) |
ngx_http_proxy_module |
Módulo de proxy reverso |
ngx_http_upstream_module |
Balanceamento de carga e health checks |
ngx_http_rewrite_module |
Reescrita de URLs |
ngx_http_limit_conn_module |
Limitação de conexões simultâneas |
ngx_http_limit_req_module |
Limitação da taxa de requisições |
ngx_http_log_module |
Registro de logs de acesso |
ngx_http_auth_basic_module |
Autenticação básica HTTP (usuário/senha) |
ngx_http_ssl_module |
Suporte a conexões HTTPS |
Variáveis e Códigos de Status HTTP do Nginx
1. Variáveis do Nginx
Variáveis são usadas para acessar informações sobre a requisição e o servidor.
$uri: URI da requisição atual (sem parâmetros).$request_uri: URI completa da requisição (com parâmetros).$host: Cabeçalho Host da requisição.$remote_addr: Endereço IP do cliente.$request_filename: Caminho do arquivo local mapeado pela URI.$request_method: Método da requisição (GET, POST, etc.).$server_addr: Endereço IP do servidor.$server_name: Nome do servidor virtual.$server_port: Porta do servidor.$scheme: Protocolo (http ou https).$http_HEADER: Valor de um cabeçalho específico da requisição HTTP.
2. Códigos de Status HTTP
Indicam o resultado de uma requisição HTTP:
301: Movido Permanentemente302: Movido Temporariamente400: Requisição Inválida403: Proibido Acesso404: Não Encontrado413: Entidade da Requisição Muito Grande500: Erro Interno no Servidor502: Bad Gateway (Gateway Inválido)504: Gateway Timeout (Tempo Limite do Gateway)