Artigo Diretório
1. Noções básicas de serviço Nginx
1.1, visão geral do Nginx
Nginx é um servidor proxy reverso e HTTP de alto desempenho, bem como um servidor proxy IMAP / POP3 / SMTP.
Nginx é um servidor web / servidor proxy reverso leve e um servidor proxy de e-mail, e é emitido sob um protocolo semelhante ao BSD. Desenvolvido pelo programador russo lgor Sysoev, é usado pelo portal de grande escala e pelo motor de busca Rambler da Rússia. Sua característica é que ele ocupa menos memória e tem forte concorrência.Na verdade, a concorrência do nginx tem um desempenho melhor no mesmo tipo de servidor web.
Comparado com o Apache \ lighttpd, o Nginx tem as vantagens de menos memória e maior estabilidade, e é conhecido por sua forte concorrência, rica biblioteca de módulos e configuração amigável e flexível. No sistema operacional Linux, o nginx usa o modelo de evento epoll, graças a isso o nginx é muito eficiente no sistema operacional Linux. Ao mesmo tempo, o Nginx usa um modelo de evento eficiente kqueue semelhante ao Epoll no sistema operacional OpenBSD ou FreeBSD. Um
software de serviço da Web leve e de alto desempenho,
alta estabilidade, baixo
consumo de recursos do sistema, alta
capacidade de processamento para conexões simultâneas HTTP e um
único servidor físico Suporta 30.000 ~ 50.000 solicitações simultâneas
1.2. Compilar e instalar o Nginx
1.2.1, etapas de compilação e instalação
1. Monte a pasta compartilhada do host e leia o arquivo de origem baixado
2. Descompacte o pacote de componentes de plataforma cruzada e o pacote de código-fonte
Mova o pacote de componentes de plataforma cruzada para o diretório do pacote de origem
3. Instale o compilador e outras ferramentas
yum -y install gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl \
zlib-devel \
pcre
4. configurar a configuração
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
5. fazer compilar e instalar
6. Otimização de caminho
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin '//nginx命令执行路径优化'
useradd -M -s /sbin/nologin nginx
1.2.2, use o controle systemctl
vim /lib/systemd/system/nginx.service '//添加使用systemctl工具进行管理'
[Unit]
Description=nginx '//描述'
After=network.target '//描述服务类别'
[Service]
Type=forking '//后台运行形势'
PIDFile =/usr/local/nginx/logs/nginx.pid '//PID文件位置'
ExecStart=/usr/local/nginx/sbin/nginx '//启动服务'
ExecReload=/usr/bin/kill -S HUP $MAINPID '//根据PID重载配置'
ExecStop=/usr/bin/kill -S QUIT $MAINPID '//根据PID终止进程'
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod 754 /lib/systemd/system/nginx.service
1.2.3, abra o nginx, feche o firewall
[root@localhost system]# chmod +754 nginx.service
[root@localhost system]# systemctl start nginx.service
[root@localhost system]# netstat -ntap |grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5396/nginx: master
tcp 0 0 192.168.197.192:56680 192.168.100.3:445 ESTABLISHED -
[root@localhost system]# systemctl stop firewalld.service
[root@localhost system]# setenforce 0
Após a instalação, inicie o serviço, digite o IP no navegador, esta tela aparece e o serviço inicia com sucesso
1.3, estatísticas de status de acesso do Nginx
Ginx tem um módulo de estatísticas de status http_stub_status integrado, que é usado para realimentar o acesso à Web atual. Ao configurar os parâmetros de compilação, você pode adicionar
–with-http_stub_status_module para habilitar o suporte a este módulo. Você pode usar o comando / usr / local / nginx / sbin / nginx -V para visualizar O nginx instalado inclui o módulo http_stub_status?
Para usar a função de estatísticas de status do nginx, além de habilitar o módulo integrado, você também precisa modificar o arquivo de configuração nginx.conf, especificar o local de acesso e adicionar o código de configuração stub_status
1.3.1, experimento estatístico
Modifique o arquivo de configuração nginx.conf
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http{
server {
listen 80;
server name localhost;
charset utf-8;
location / {
root html;
index index.html index.php;
}
location ~/status {
'//添加此段'
stub_ status on;
access_ log off;
}
}
}
Após a modificação, salve wq e use Nginx -t para verificar se há algum erro na sintaxe. Se não houver erro, atualize o arquivo de configuração
. Digite 20.0.0.25 na máquina real
Dois, controle de acesso Nginx
2.1, controle de acesso baseado em autorização
Gerar arquivo de autenticação de senha de usuário
[root@localhost ~]# yum install -y httpd-tools ##因为没有htpasswd工具,所以需要安装##
[root@localhost ~]# htpasswd -c /usr/local/nginx/.passwd.db test
New password:
Re-type new password:
Adding password for user test
root@localhost ~]# cat /usr/local/nginx/.passwd.db
test:$apr1$x.UaSXIM$RRLa2KJcKwsGBVsikGcrR/
Modifique o arquivo de configuração principal para o diretório correspondente, adicione itens de configuração de autenticação
root@localhost ~]# chmod 400 /usr/local/nginx/.passwd.db
[root@localhost ~]# chown nginx /usr/local/nginx/.passwd.db
Reinicie o serviço, teste de acesso
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {
location / {
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/.passwd.db;
}
[root@localhost ~]# killall -s HUP nginx
Digite 20.0.0.25 no navegador da máquina real e solicite a senha da conta. Após
clicar em login, será exibido o welcome to nginx
2.2. Controle de acesso baseado no cliente
Determine se deseja permitir o acesso à página por meio do endereço IP do cliente
Regras de configuração:
negar segmento IP / IP: negar acesso do cliente a um determinado IP ou segmento IP
permitir segmento IP / IP: permite o acesso do cliente de um determinado IP ou segmento IP
A regra é executada de cima para baixo, se corresponder, parará e não corresponderá mais
Etapas de configuração:
modifique o arquivo de configuração principal nginx.conf, adicione os itens de configuração correspondentes,
exceto o host 20.0.0.1 para permitir que outros clientes acessem
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
location / {
Order deny,allow;
Deny from 20.0.0.1;
}
[root@localhost ~]# killall -s HUP nginx
Três, host virtual Nginx
3.1, host virtual baseado no nome de domínio
Prepare o diretório do site e teste os arquivos
[root@localhost ~]# mkdir -p /var/www/html/51xit/
[root@localhost ~]# mkdir -p /var/www/html/52xit/
[root@localhost ~]# echo "www.51xit.top" >> /var/www/html/51xit/index.html
[root@localhost ~]# echo "www.52xit.top" >> /var/www/html/52xit/index.html
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name www.51xit.top;
charset utf-8;
access_log logs/www.51xit.top.access.log;
location / {
root /var/www/html/51xit;
index index.html index.htm;
}
location /status {
stub_status on;
access_log off;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
server {
listen 80;
server_name www.52xit.top;
charset utf-8;
access_log logs/www.52xit.top.access.log;
location / {
root /var/www/html/52xit;
index index.html index.htm;
}
location /status {
stub_status on;
access_log off;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
[root@localhost ~]# killall -s HUP nginx
3.2. Host virtual baseado em IP
O host está configurado com dois endereços IP
Modifique o arquivo de configuração
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {
listen 20.0.0.25:80;
server name 20.0.0.25:80;
....}
server {
listen 192.168.100.25:80;
server name 192.168.100.25:80;
....}
[root@localhost ~]# killall -s HUP nginx
3.3, host virtual baseado em porta
Modifique o arquivo de configuração
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
server {
listen 20.0.0.25:6666;
server name 20.0.0.25:6666;
......}
server {
listen 20.0.0.25:8888;
server name 20.0.0.25:8888;
......}
[root@localhost ~]# killall -s HUP nginx