1. Descripción general básica e implementación de Nginx

Nginx es un servicio web http confiable, de alto rendimiento y de código abierto, servicio proxy, equilibrio de carga

  • Fuente abierta: obtenga el código fuente directamente
  • Alta confiabilidad: admite simultaneidad masiva
  • Alto rendimiento: servicio estable
  • Ligero: consume menos recursos

1. Servicios web http habituales

  • Http por la fundación apache
  • Edición de servicio de Microsoft IIS
  • Desarrollo de GWS Google
  • Openrestry se basa en nginx + lua
  • Tengline Taobao se desarrolla en base a Nginx

2. Por qué elegir Nginx

Nginx es muy liviano y tiene pocos módulos funcionales (el código fuente solo retiene el código del módulo central y http, y el resto del código central no es suficiente para ser instalado como un complemento)

Código modular (fácil de leer, fácil para el desarrollo secundario, muy amigable para los desarrolladores)

  • La tecnología Nginx está madura y las empresas nacionales la utilizan básicamente a gran escala.

    Aplicable a las tendencias actuales de arquitectura convencional, microservicios, arquitectura en la nube, capa intermedia

    Unifique la tecnología, reduzca los costos de mantenimiento y reduzca los costos de actualización de tecnología

  • Nginx adopta el modelo de red Epoll, Apache adopta el modelo Select

    Seleccionar: cuando el usuario inicia una solicitud, el modelo seleccionado realizará un escaneo transversal, lo que resultará en una degradación del rendimiento.

    Epoll: cuando un usuario inicia una solicitud, el modelo de epoll la procesará directamente, lo cual es eficiente y eficiente, y no hay límite de conexión.

Escenarios de aplicación de Nginx

  • Servicio estático: html | jgp | png…

    Caché Nginx

  • Servicio de agencia:

    Agente de reenvío: visitas internas y visitas externas

    Proxy inverso: el efecto de las visitas externas y el equilibrio de carga es el mismo, pero los métodos de trabajo son diferentes.

  • Equilibrio de carga:

  • Caché

  • Servicio de seguridad:

    Control de acceso: basado en la dirección IP, basado en la autenticación de identidad

    WAF: ataque DDOS, ataque CC, inyección SQL

  • Arquitectura

    LNMP (linux 、 nginx 、 mysql 、 php)

    LNMT (linux 、 ngxin 、 mysql 、 tomcat)
    Inserte la descripción de la imagen aquí

3.despliegue de Nginx

3.1. Método de instalación de Nginx:

  • fuente epel: versión baja, pocas características
  • Fuente oficial: compilado oficialmente, empaquetado en un paquete rpm y proporciona una fuente yum, (recomendado)
  • Código fuente: descargue el código fuente usted mismo, use .configure / make / make install (instalación compleja y que requiere mucho tiempo)

3.2. Instalar Nginx 1.16.1 (yum)

3.2.1 Configurar la fuente oficial de yum oficial de Nginx

vim /etc/yum.repos.d/nginx.repo 
[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

3.2.2 Ver la fuente de instalación

[root@nginx_web1 yum.repos.d]# yum list nginx
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
base: mirrors.aliyun.com
extras: mirrors.aliyun.com
updates: mirrors.aliyun.com
可安装的软件包
nginx.x86_64  		1:1.16.1-1.el7.ngx          nginx-stabl

3.2.3 Instalar Nginx

[root@nginx_web1 yum.repos.d]# yum -y install nginx
[root@nginx_web1 yum.repos.d]# nginx -v				//小v查看版本号
nginx version: nginx/1.16.1
[root@nginx_web1 yum.repos.d]# nginx -V 		//大V查看版本号及安装选项
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
[root@nginx_web1 yum.repos.d]# cd /usr/lib64/nginx/modules/

3.2.4 Archivo de configuración de Nginx

**Nginx主配置文件**
/etc/nginx
/etc/nginx/nginx.conf
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
**cgi、Fastcgi、Uwcgi配置文件**
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
**Nginx编码编码转换映射文件**
/etc/nginx/win-utf
/etc/nginx/koi-utf
/etc/nginx/koi-win
**http协议得Content-Type与扩展名**
/etc/nginx/mime.types
**配置系统守护进程管理器**
/usr/lib/systemd/system/nginx.service
**Nginx日志轮询,日志切割**      ******
/etc/logrotate.d/nginx
**Nginx终端管理命令**
/usr/sbin/nginx
/usr/sbin/nginx-debug
**Nginx模块目录**
/usr/lib64/nginx
/usr/lib64/nginx/modules
**Nginx默认站点目录**
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
**Nginx帮助手册**
/usr/share/man/man8/nginx.8.gz
/usr/share/doc/nginx-1.16.1
**Nginx的缓存目录**
/var/cache/nginx
**Nginx的日志目录**
Nginx/log/nginx

3.3 Problema: problema de instalación

Pregunta 1: Si el Nginx anterior de la empresa se instaló a través del código fuente, esto requiere que implementemos un nuevo servidor Nginx, cómo lograrlo

Solución: obtenga la versión a través de Nginx -v, y obtenga las opciones de configuración a través de nginx -V

Pregunta 2: Hay tantas opciones, ¿tienes que combinarlas? Las opciones de publicación de blog que se encuentran en línea no son tan largas.

Solución: Las opciones se especifican de acuerdo con las necesidades de la empresa, y es mejor que las implemente el funcionario.

3.4. Instalar nginx 1.16.0 (código fuente)

3.4.1 Paquete tar de descarga oficial: http://nginx.org/

3.4.2 Descomprimir el paquete

tar xf nginx-1.16.0.tar.gz -C /usr/src/ 
cd /usr/src/nginx-1.16.0/
useradd -s /sbin/nologin nginx -M id nginx

3.4.3 https depende del grupo de cifrado

#安装依赖。
yum install pcre pcre-devel -y
yum install openssl openssl-devel -y  #https加密用他。

3.4.4 Compilar e instalar

–Prefijo = / etc / nginx
–sbin-path = / usr / sbin / nginx
–modules-path = / usr / lib64 / nginx / modules
–conf-path = / etc / nginx / nginx.conf
–error-log-path = / var / log / nginx / error.log
–http-log-path = / var / log / nginx / access.log
–pid-path = / var / run / nginx.pid
–lock-path = / var / run /nginx.lock
Ruta y directorio de instalación del programa
–Http-client-body-temp-path = / var / cache / nginx / client_temp
–http-proxy-temp-path = / var / cache / nginx / proxy_temp
–http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp
–http-uwsgi-temp-path = / var / cache / nginx / uwsgi_temp
–http-scgi-temp-path = / var / cache / nginx / scgi_temp
Directorio de caché temporal
-User = nginx
-Grupo = nginx
Configure el proceso de Nginx para iniciar el usuario y el grupo (seguridad)
–Con-cc-opt Se agregarán parámetros adicionales establecidos a la variable CFLAGS
–Con-ld-opt Establecer parámetros adicionales, biblioteca del sistema de enlace
./configure  --prefix=/application/nginx-1.16.0/ user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'    //模块可以查看yum安装 nginx -V 
make 
make install
ln -s /application/nginx-1.16.0/ /application/nginx
/application/nginx/sbin/nginx 
netstat -lntup|grep nginx

默认启动
cd /application/nginx-1.16.0/sbin/
./nginx 			启动
./nginx -s stop		关闭
./nginx -s quit		退出
./nginx -s reload	重新加载

systemctl启动文件
cat > /lib/systemd/system/nginx.service <<-EOF
添加内容如下:
[Unit]
Description=nginx service
After=network.target 
   
[Service] 
Type=forking 
ExecStart=/application/nginx-1.16.0/sbin/nginx
ExecReload=/application/nginx-1.16.0/sbin/nginx -s reload
ExecStop=/application/nginx-1.16.0/sbin/nginx -s quit
PrivateTmp=true 
   
[Install] 
WantedBy=multi-user.target
EOF
systemctl enable nginx
systemctl disable nginx

4. Archivo de configuración de Nginx .conf

El archivo de configuración principal de Nginx /etc/nginx/nginx.conf es un archivo de texto sin formato y todo el archivo de configuración se compone de bloques. Generalmente, cada bloque usa un par de llaves {} para indicar el comienzo y el final.

  1. Configuración global del módulo principal de CoreModule
  2. Módulo controlado por eventos EventModule
  3. parte del módulo del kernel httpCoreModule http

4.1 Necesidad de comprender las extensiones

  • Puede haber eventos y HTTP bajo la capa CoreModule
  • La capa del módulo HTTP permite múltiples capas de servidor, y el servidor se usa principalmente para configurar múltiples sitios web.
  • La capa de servidor permite múltiples ubicaciones, la ubicación se utiliza principalmente para definir la ruta de acceso al sitio web

4.2 Módulo principal de CoreModule

user	nginx;				       #Nginx进程所使用的用户
worker_processes 1;				    #Nginx运行的worker进程数量(建议与cpu数量一致或auto)
error_log  /log/nginx/error.log		 #Nginx错误日志存放的路径
pid	/var/run/nginx.pid				#Nginx服务运行后产生的pid进程号

4.3 eventos módulo de eventos

events	{
    
    
		worker_connectios	1024;		#每个worker进程支持最大连接数量默认1024
		use opool;				#事件驱动模块,epoll默认
}

4.4 módulo de kernel http

vim /etc/nginx/nginx.conf
http {
    
    
	include       /etc/nginx/mime.types;    //支持的文件类型路径
	default_type  application/octet-stream;		//默认类型
	log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';    //日志文件格式
	access_log  /var/log/nginx/access.log  main;		//访问日志
	
	keepalive_timeout  65;					//长连接 超时间65秒 
	include /etc/nginx/conf.d/*.conf;		//所有配置文件路径
	}
	
[root@nginx_web1 html]# egrep -v '^$|^.*#' /etc/nginx/conf.d/default.conf  //过滤注释信息	
vim /etc/nginx/nginx/conf.d/default.conf
	server {
    
    
		listen 80;						//监听端口号80
		server_name localhost;			 //提供服务的域名或主机名
		#access_log  /var/log/nginx/host.access.log		//访问日志
		location	/	{
    
    
			 root   /usr/share/nginx/html;		//访问网站代码路径
        	  index  index.html index.htm;		//服务器返回的默认页面文件
		}
		//指定代码,统一定义错误页面,错误代码重定向到新的Location
		error_page   500 502 503 504  /50x.html;	
		    location = /50x.html {
    
    
        	 root   /usr/share/nginx/html;
    	}
	}
	
[root@nginx_web1 conf.d]# vim oldboy.conf     //多站点可以分不同文件编写。前提主机名、端口、ip不能冲突
	server {
    
    
		listen 80
		server_name www.oldboy.com
		location	/	{
    
    
				root	/oldboy/www
				index.php
		}
	}

5.Sitio web de configuración de Nginx

[root@nginx_web1 conf.d]# mv default.conf default.conf.bak
[root@nginx_web1 conf.d]# vim oldboy.conf
server {
    
    
	listen	80;
	server_name localhost;
	location / {
    
    
		root /html;
		index index.html;
	}
}
[root@nginx_web1 conf.d]# mkdir /html
[root@nginx_web1 conf.d]# echo "nihao123456778" > /html/index.html
[root@nginx_web1 conf.d]# nginx -t 					//检测配置文件
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
systemctl restart nginx

[root@nginx_web1 conf.d]# tail /var/log/nginx/access.log		//访问日志
[root@nginx_web1 conf.d]# tail /var/log/nginx/error.log			//错误日志信息

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_43357497/article/details/113763914
Recomendado
Clasificación