NO.A.0002 —— Análisis del concepto de entrada nginx

1. Construya la plataforma Nginx WEB desde 0
nginx es un software de servidor WEB gratuito y de código abierto. Fue adquirido por el fabricante de equilibrio de carga de hardware F5 por 670 millones de dólares estadounidenses el 12 de marzo de 2019. nginx se utiliza principalmente para publicar código de sitios web (escrito por desarrolladores) Para aquellos que brindan servicios de información web, los usuarios pueden acceder a las páginas a través del navegador:
el software web nginx solo puede procesar páginas web estáticas de forma predeterminada y no puede procesar directamente páginas web dinámicas. Las páginas web dinámicas se entregan a un programa de terceros para su análisis. Nginx afirma oficialmente que La capacidad de concurrencia para procesar páginas web estáticas puede alcanzar 5w / s, lo que equivale a 5-10 veces el rendimiento general de Apache WEB: mayor concurrencia y mejor desempeño (en comparación con Apache
Apache: servidor web tradicional, desarrollado antes de Nginx. Ahora nginx es ahora Reemplaza a Apache paso a paso; también se usa para manejar páginas web estáticas; no puede manejar páginas web dinámicas.
Tomcat: un producto de la Fundación Apache: maneja páginas web dinámicas.
Páginas web estáticas: generalmente páginas web que no interactúan con la base de datos back-end , El contenido de las páginas web rara vez se actualiza o casi nunca. Los sufijos de los archivos web suelen terminar en htm, html, xml, etc.
Páginas web dinámicas: interactúan con datos de back-end, el contenido web se actualiza con frecuencia o el contenido de la base de datos de back-end cambia. Actualización; el sufijo del archivo web termina en asp, php, jsp, etc.

2. Basado en el sistema operativo Centos Linux, construya un conjunto de plataforma de servicio Nginx WEB desde 0. Hay principalmente dos formas,
método binario YUM: el método de implementación es relativamente simple, rápido y eficiente, y puede verificar automáticamente la seguridad del software y puede verificar automáticamente La verificación de la corrección del paquete de software puede resolver automáticamente las dependencias entre los paquetes de software. Los servicios de software se pueden instalar y configurar automáticamente como servicios del sistema. No puede personalizar las funciones y módulos específicos del servicio de software. Una vez que se completa la instalación predeterminada, los archivos y directorios están relativamente dispersos, sin cambios y se mantienen y administran posteriormente.
HAGA el método de compilación del código fuente: relativamente complicado, no se puede verificar, no se pueden instalar automáticamente las dependencias del sistema, se configuran automáticamente módulos y funciones de software personalizados, y el directorio de instalación está relativamente unificado, lo que es conveniente para el mantenimiento y la administración posteriores.

3. Método de compilación basado en el código fuente MAKE:
1. Para construir la plataforma WEB de Nginx, primero descargue la versión estable del paquete de software Nginx del sitio web oficial de Nginx, la
dirección IP del host de nginx-1.160.tar.gz : 192.168.1.81

[root@localhost ~]#   wget   -c  http://nginx.org/download/nginx-1.16.0.tar.gz   -P  /tmp/     //-c 断点续传,  -P 指定特定目录    下载nginx源码包。
[root@cdeba90ec46e ~]# tar -zxvf nginx-1.16.0.tar.gz        //-x解压、-z gzip压缩、-v详细、-f文件

Debido a que Nginx es un programa de software de código fuente desarrollado en base al lenguaje C, el sistema operativo Linux no puede usarlo directamente de forma predeterminada. Necesita usar un compilador C para compilar los archivos de código fuente en un archivo binario por el compilador de código fuente, por lo que se requieren los tres pasos de la implementación del software de código fuente. :

//预编译:主要是检测linux系统安装该软件所需的依赖环境、库文件、检测linux系统是否存在GCC编译环境(C编译器),指定软件服务部署的路径,自定义软件服务特定的模块和功能,最终会产生Makefile文件。
[root@localhost nginx-1.16.0]#  ./configure --prefix=/usr/local/nginx  --user=www   --group=www  --with-http_stub_status_module   //设置我们的用户和组www、便于后期管理我们的nginx,需要我们手动创建。--with-http_stub_status_module  开启状态监控模块
//编译:主要通过make编译工具,读取Makefile文件,调用linux操作系统下GCC编译环境(C编译器)将软件包中的源代码文件编译生成二进制文件,Makefile文件用途,主要告知make编译工具,在编译源代码文件时,在哪个源码开始编译至哪个源码结束编译。以及记录编译时的依赖关系
[root@localhost nginx-1.16.0]#  make  
cc -c    // 只编译,不产生二进制文件
cc -o    // 产生二进制文件
cc -o objs/nginx   //把这个文件拷贝到我们的安装目录之下。
[root@cdeba90ec46e nginx-1.16.0]# md5sum objs/nginx         
ec4cf649ae95588e9906eaa71baa354f  objs/nginx      //查看得objs/nginx文件的md5位354f
[root@cdeba90ec46e nginx-1.16.0]# md5sum /usr/local/nginx/sbin/nginx 
ec4cf649ae95588e9906eaa71baa354f  /usr/local/nginx/sbin/nginx      //nginx文件md5值是354f, 是因为make的时候把文件拷贝到安装目录之下
//安装:主要是将第二步make编译产生的二进制文件,拷贝或者安装至linux操作系统指定的安装目录  --prefix=/usr/local/nginx
[root@localhost nginx-1.16.0]#  make install
[root@cdeba90ec46e nginx-1.16.0]# ls -l /usr/local/nginx/
total 0
drwxr-xr-x 2 root root 333 Nov  2 08:54 conf    //配置文件所在路径
drwxr-xr-x 2 root root  40 Nov  2 08:54 html    //发布目录,开发写的代码存放位置,
drwxr-xr-x 2 root root   6 Nov     //日志文件
drwxr-xr-x 2 root root  19 Nov  2 08:54 sbin    // 启动程序

Verifique el estado después de la configuración:

[root@cdeba90ec46e ~]# /usr/local/nginx/sbin/nginx   //启动服务
[root@cdeba90ec46e ~]# ps -ef |grep nginx
root        3131       0  0 09:01 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
www         3132    3131  0 09:01 ?        00:00:00 nginx: worker process
root        3134     161  0 09:02 ?        00:00:00 grep --color=auto nginx
[root@cdeba90ec46e ~]# netstat -tunlp |grep -w 80  --color       //-w 打印出来,查看80端口
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3131/nginx: master
[root@cdeba90ec46e ~]# netstat -tunlp |grep -v 80                //-v 取反。不看80端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      110/sshd            
tcp6       0      0 :::22                   :::*                    LISTEN      110/sshd            
[root@cdeba90ec46e ~]#  firewall-cmd --add-port=80/tcp  --permanent    //开启防火墙的80 端口   //centos7
[root@cdeba90ec46e ~]#  iptables -t filter -A INPUT -m tcp -p --dport 80 -j ACCEPT     //开启80 端口   //centos6

Sitio web del portal predeterminado:
Inserte la descripción de la imagen aquí

2. Nginx downgrade combat: rebaja la versión de nginx de 1.16.0 a 1.15.0 (el intervalo de versiones puede ser demasiado grande y es posible que la compilación no se realice correctamente)

//1、查看服务的版本
[root@cdeba90ec46e ~]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.16.0
//2、发现我们的nginx版本比较高,降级  //我们降级需先知道降级的版本;降级到1.10.3版本,且不影响我们现有的服务。
//保留之前新版本的编译参数
//现有的nginx编译参数怎么查看
 [root@cdeba90ec46e ~]# /usr/local/nginx/sbin/nginx -V   // -V大写
nginx version: nginx/1.16.0
built by gcc 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC) 
configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module   //复制之前的参数预编译使用
//3、需先将降级之后的版本解压。
[root@cdeba90ec46e nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module  //-V查找出来的参数
//降级不执行make install,只执行make即可,只有安装的时候需要makeinstall

//为什么二进制文件我们备份为.old文件,我们的服务没有收到任何影响:nginx调用文件的时候是调用文件的描述符,
//新的objs/nginx文件需让它生效,不生效还是使用之前的文件。
[root@cdeba90ec46e nginx-1.15.0]# kill USR2 cat /usr/local/nginx/logs/nginx.pid    // USR2陆续的把nginx.pid文件的程序一步步停掉。

3. Actualización suave de Nginx:

和nginx降级的方案一样,升级降级不必执行make install;
我们只要nginx二进制文件即可,无需安装。

Cuatro, combate real de la empresa de host virtual WEB de Nginx:

1. En el entorno de producción empresarial, un servidor nginx generalmente no solo publica un sitio web, sino que, basado en un solo servidor nginx, publica e implementa múltiples conjuntos de sitios web, lo que puede maximizar el uso de los recursos del sistema operativo del servidor Nginx WEB y evitar problemas de recursos. residuos.
2. El método de publicación de varios conjuntos de sitios web en un único servidor WEB de Nginx se denomina host virtual.Hay tres formas principales para que nginx publique hosts virtuales.
Basado en el mismo puerto 80, diferentes direcciones IP: (multi-IP) no se recomienda,
basado en la misma dirección IP, diferentes puertos PORT: (multi-puerto) los usuarios usan el puerto 80 para acceso directo, y no se recomienda
basarse en el mismo puerto 80. Diferentes nombres de dominio de acceso: (nombres de múltiples dominios)
3. Basado en el mismo puerto 80, diferentes nombres de dominio de acceso (v1.cvc.net, v2.cvc.net); para configurar el host virtual de múltiples sitios web Nginx, esquema de operación:

//1、切换到nginx安装目录下进入conf目录,找到主配置文件:
[root@cdeba90ec46e conf]#vim /ur/local/nginx/conf/nginx.conf
//shell三剑客awk、sed、grep去除配置文件中#号和空行;
[root@cdeba90ec46e conf]# awk '/#/' nginx.conf          //第一个斜杆开始查找,第二个斜杠查找结束,查找两个斜杠里面的内容
[root@cdeba90ec46e conf]# awk '!/#/' nginx.conf         //加上!号表示取反,表示我们不需要显示空行。
[root@cdeba90ec46e conf]# awk '!/#/' nginx.conf|awk '!/^$/'       // ^ 表示空行;/^/以空开头以空结尾;/^$/以空开头,不以空结尾。
[root@cdeba90ec46e conf]# sed  '/#/d' nginx.conf|sed '/^$/d'      //删除#号的空行的内容
[root@cdeba90ec46e conf]# grep -v "#" nginx.conf|grep -v "^$"

4. El código final de nginx.conf es:

[root@cdeba90ec46e conf]# grep -v "#" nginx.conf|grep -v "^$"
worker_processes  1;            //worker_processes表示nginx的服务进程,负责接收和处理用户的请求。-9表强制kill
events {                        //events  时间模块
    worker_connections  1024;   //worker_connections表示一个工作进程处理的用户请求为1024,整个nginx可以处理最大的用户并发为1024*4=4096个人用户请求
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {                    //server里面的内容是我们的虚拟主机,也就是网站;默认nginx只有一套网站。若想发布多套网站,我们复制server再粘贴就可以了。
        listen       80;        //监听端口
        server_name  localhost;  //server_name监听域名 ;localhost表示本机域名;
        location / {             //location表示我们的发布目录;
            root   html;        // root:表示发布目录  ,html:表示相对路径;绝对路径是:/usr/local/nginx/html  
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
[root@cdeba90ec46e conf]# ps -ef |grep nginx
root        3131       0  0 10:39 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx    //master不负责接收用户请求,只负责管理进程。
www         3132    3131  0 10:39 ?        00:00:00 nginx: worker process                                //worker
可以看到一个master和一个worker进程:(配置文件里面只有一个进程)
更改配置文件4个进程:
[root@cdeba90ec46e conf]# /usr/local/nginx/sbin/nginx -s reload   //重启nginx

5. Basado en el mismo puerto 80, configuración de diferentes nombres de dominio de acceso (v1.cvc.net, v2.cvc.net)

[root@cdeba90ec46e conf]# vim /usr/local/nginx/conf/nginx.conf
worker_processes  4;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
====================================================================================
    server {                            //第一个虚拟主机
        listen       80;
        server_name  v1.cvc.net;        //域名
        location / {
            root   /usr/local/nginx/html/v1.cvc.net;  //发布目录
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {                                //第二个虚拟主机
        listen       80;
        server_name  v2.cvc.net;    //域名
        location / {
            root   /usr/local/nginx/html/v2.cvc.net;  //发布目录
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

6. Cree manualmente dos directorios de versiones de mkdir;

[root@cdeba90ec46e conf]# mkdir -p /usr/loca/nginx/html/v{1,2}.cvc.net  //大括号表示范围
[root@cdeba90ec46e html]# cat >/usr/local/nginx/html/v1.cvc.net/index.html<<EOF
<html>
<h1>v1.cvc.net Test Pages 域名:www.cvc.com</h1>
<hr color=red>
</html>
EOF
[root@cdeba90ec46e html]# cat >/usr/local/nginx/html/v2.cvc.net/index.html<<EOF
<html>
<h1>v2.cvc.net Test Pages 域名:www.cvc.com</h1>
<hr color=red>
</html>
EOF

[root@cdeba90ec46e /]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@cdeba90ec46e conf]# /usr/local/nginx/sbin/nginx -s reload   //重启nginx

7. En el entorno de red interna, necesitamos configurar el archivo de hosts locales y la resolución del nombre de dominio;

1、看浏览器缓存,没有
2、看电脑本地的hosts文件,DNS服务器会将这个域名的请求交给我们本地DNS服务器;
3、本地DNS有域名的配置,会直接发给浏览器;
4、若本地的DNS服务器也没有,会发往根,
本地DNS配置,hosts文件配置;
本地电脑C:\Windows\System32\drivers\etc
192.168.1.81 v1.cvc.net
192.168.1.81 v2.cvc.net
然后再通过浏览器去访问;
[root@cdeba90ec46e v2.cvc.net]# pkill nginx    停止nginx

Este curso tiene un script de configuración de host virtual nginx: 52:49

https://ke.qq.com/webcourse/2025906/102127284#taid=8522396233296306&vid=5285890801428670469

Supongo que te gusta

Origin blog.51cto.com/15005403/2552253
Recomendado
Clasificación