Directorio de artículos
1. Conceptos básicos del servicio Nginx
1.1, descripción general de Nginx
Nginx es un servidor proxy inverso y HTTP de alto rendimiento, así como un servidor proxy IMAP / POP3 / SMTP.
Nginx es un servidor web ligero / servidor proxy inverso y servidor proxy de correo electrónico, y se distribuye bajo un protocolo similar a BSD. Desarrollado por el programador ruso lgor Sysoev, es utilizado por el portal ruso a gran escala y el motor de búsqueda Rambler. Su característica es que ocupa menos memoria y tiene una fuerte concurrencia, de hecho, la concurrencia de nginx funciona mejor en el mismo tipo de servidor web.
Comparado con Apache \ lighttpd, Nginx tiene las ventajas de menos memoria y mayor estabilidad, y es conocido por su fuerte concurrencia, biblioteca de módulos rica y configuración amigable y flexible. Bajo el sistema operativo Linux, nginx usa el modelo de eventos epoll, gracias a esto, nginx es muy eficiente bajo el sistema operativo Linux. Al mismo tiempo, Nginx utiliza un modelo de eventos eficiente kqueue similar a Epoll en el sistema operativo OpenBSD o FreeBSD. Un
software de servicio web ligero y de alto rendimiento,
alta estabilidad, bajo
consumo de recursos del sistema, alta
capacidad de procesamiento para conexiones HTTP concurrentes y un
único servidor físico. Admite 30000 ~ 50000 solicitudes simultáneas
1.2. Compile e instale Nginx
1.2.1, compilar e instalar pasos
1. Monte la carpeta compartida del host y lea el archivo fuente descargado
2. Descomprima el paquete de componentes multiplataforma y el paquete de código fuente
Mueva el paquete de componentes multiplataforma al directorio del paquete fuente
3. Instale el compilador y otras herramientas
yum -y install gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl \
zlib-devel \
pcre
4.configurar la configuración
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
5.hacer compilar y hacer instalar
6. Optimización de la ruta
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin '//nginx命令执行路径优化'
useradd -M -s /sbin/nologin nginx
1.2.2, use el control 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 nginx, cierre el 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
Una vez completada la instalación, inicie el servicio, ingrese la IP en el navegador, aparece esta pantalla y el servicio se inicia con éxito
1.3, estadísticas de estado de acceso a Nginx
Ginx tiene un módulo de estadísticas de estado http_stub_status incorporado, que se usa para retroalimentar el acceso web actual. Al configurar los parámetros de compilación, puede agregar
–with-http_stub_status_module para habilitar el soporte de este módulo. Puede usar el comando / usr / local / nginx / sbin / nginx -V para ver ¿El nginx instalado incluye el módulo http_stub_status?
Para usar la función de estadísticas de estado de nginx, además de habilitar el módulo incorporado, también necesita modificar el archivo de configuración nginx.conf, especificar la ubicación de acceso y agregar el código de configuración stub_status
1.3.1, experimento estadístico
Modifique el archivo de configuración 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;
}
}
}
Después de la modificación, guarde wq y luego use Nginx -t para verificar si hay errores en la sintaxis. Si no hay ningún error, actualice el archivo de configuración
. Ingrese 20.0.0.25 en la máquina real
Dos, control de acceso Nginx
2.1, control de acceso basado en autorización
Generar archivo de autenticación de contraseña de usuario
[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 el archivo de configuración principal al directorio correspondiente, agregue elementos de configuración de autenticación
root@localhost ~]# chmod 400 /usr/local/nginx/.passwd.db
[root@localhost ~]# chown nginx /usr/local/nginx/.passwd.db
Reiniciar el servicio, prueba de acceso
[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
Ingrese 20.0.0.25 en el navegador de la máquina real y solicite ingresar la contraseña de la cuenta. Después de
hacer clic en iniciar sesión, aparece la bienvenida a nginx
2.2. Control de acceso basado en el cliente
Determinar si permitir el acceso a la página a través de la dirección IP del cliente.
Reglas de configuración:
denegar IP / segmento de IP: denegar el acceso del cliente a una determinada IP o segmento de IP
Permitir segmento de IP / IP: permitir el acceso de clientes de una determinada IP o segmento de IP
La regla se ejecuta de arriba a abajo, si coincide, se detiene y ya no coincide
Pasos de configuración:
modifique el archivo de configuración principal nginx.conf, agregue los elementos de configuración correspondientes
excepto el host 20.0.0.1 para permitir que otros clientes accedan
[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
Tres, host virtual Nginx
3.1, host virtual basado en el nombre de dominio
Prepare el directorio del sitio web y los archivos de prueba
[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 basado en IP
El host está configurado con dos direcciones IP
Modificar el archivo de configuración
[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 basado en puerto
Modificar el archivo de configuración
[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