I. Introducción
Este artículo presenta principalmente el tutorial para descargar, instalar, configurar y usar Nginx en el entorno CentOS 7.6. Los amigos que estén aprendiendo nginx pueden consultarlo.
2. Descargar
Utilice el siguiente comando para descargar
wget http://nginx.org/download/nginx-1.23.3.tar.gz
3. Instale las bibliotecas de entorno requeridas por nginx.
En primer lugar, necesitamos instalar gcc, gcc-c++, zlib, pcre y openssl.
¿Determinar si el nombre del paquete está instalado?
rpm -q ?Nombre del paquete
3.1 Instalar gcc gcc-c++
yum instalar -y gcc gcc-c++
3.2 Descargar e instalar pcre
cd /usr/local/
wget http://downloads.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz
tar -zxvf pcre-8.45.tar.gz
cd pcre-8.45
./configure
make && make install
3.3 Descargar e instalar openssl
cd /usr/local/
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz --no-check-certificate
tar -zxvf openssl-1.1.1t.tar.gz
cd openssl-1.1.1t
./config
make && make install
Nota: Recuerde agregar –no-check-certificate después de wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz; de lo contrario, se informará un error. Muestra que el certificado emitido en www.openssl.org ha caducado y no se puede verificar.
3.4 Descargar e instalar zlib
cd /usr/local/
wget http://zlib.net/zlib-1.2.13.tar.gz
tar -zxvf zlib-1.2.13.tar.gz
cd zlib-1.2.13
./configure
make && make install
4. Instale nginx
4.1 Configuración de instalación
cd /usr/local/
wget http://nginx.org/download/nginx-1.23.3.tar.gz
tar -zxvf nginx-1.23.3.tar.gz -C /usr/local/
cd nginx-1.25.2
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.45 --with-openssl=/usr/local/openssh
make && make install
4.2 Cree un enlace suave SSL; de lo contrario, se informará un error al iniciar nginx
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
5. Inicie Nginx
5.1 Iniciar Nginx
/usr/local/nginx/sbin/nginx
Pruebe nginx y acceda a la IP del servidor desde otra máquina. Si aparece la página "¡Bienvenido a nginx!", significa éxito; si no puede acceder a la página pero puede hacer ping al servidor, es posible que haya activado el firewall, simplemente apáguelo. .
5.2 Apagar el firewall
systemctl stop firewalld.service
5.3 Apague el firewall e inícielo automáticamente al arrancar
systemctl disable firewalld.service
5.4 Detener el servicio nginx
/usr/local/nginx/sbin/nginx –s stop
5.5 Cerrar con fuerza el servicio nginx
pkill nginx
5.6 Configurar nginx para que se inicie automáticamente al arrancar
Cree un nombre de servicio nginx en la ruta /usr/lib/systemd/system, aquí configurado en nginx.service
cd /usr/lib/systemd/system
vim nginx.service
Configura lo siguiente
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid #更换成自己安装nginx的路径
ExecStartPre=/usr/local/nginx/sbin/nginx -t #更换成自己安装nginx的路径
ExecStart=/usr/local/nginx/sbin/nginx #更换成自己安装nginx的路径
ExecReload=/usr/local/nginx/sbin/nginx -s reload #更换成自己安装nginx的路径
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Simplemente guarde la configuración.
Configurar el inicio automático al arrancar
systemctl enable nginx.service
Compruebe si la configuración es exitosa
systemctl list-unit-files | grep nginx
启动:systemctl start nginx.service
关闭:systemctl stop nginx.service
6. Introduzca la configuración de Nginx.
6.1 Introducción al archivo de configuración nginx.conf
#nginx配置
#user nobody;
worker_processes 1; #服务器并发处理服务关键配置
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024; #最大连接数为 1024.
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
#gzip on; #http头压缩
#正向代理配置
server {
listen 8080; # 代理监听端口
resolver 114.114.114.114; #代理DNS配置
#charset koi8-r;
access_log /home/lich/logs/fproxy.access.log; #accesslog输出路径
error_log /home/lich/logs/fproxy.error.log; #errorlog输出路径
location / {
proxy_pass $scheme://$host$request_uri; # 配置正向代理参数
proxy_set_header Host $http_host; # 解决如果URL中带"."后Nginx 503错误
proxy_buffers 256 4k; # 配置缓存大小
proxy_max_temp_file_size 0; # 关闭磁盘缓存读写减少I/O
proxy_connect_timeout 30; # 代理连接超时时间
# 配置代理服务器HTTP状态缓存时间
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
}
}
#反向代理配置
server {
listen 80;
server_name test.test.com; #代理转发域名配置
access_log /home/lich/logs/rproxy.access.log;
error_log /home/lich/logs/rproxy.error.log;
location / {
proxy_pass http://172.16.113.1:8001; #代理到后段实际应用服务器地址
index index.html index.htm index.jsp;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
6.2 Monitoreo del uso de la configuración
listen *:80 | *:8080 #监听所有80端口和8080端口
listen IP_address:port #监听指定的地址和端口号
listen IP_address #监听指定ip地址所有端口
listen port #监听该端口的所有IP连接
6.3 nombre_servidor: configuración de host virtual basada en nombres
El formato de sintaxis es el siguiente:
server_name name ...;
Para el nombre, puede haber solo uno o varios nombres, separados por espacios. Cada nombre consta de dos o tres párrafos, separados por "." entre cada párrafo.
server_name test.com www.test.com
Se puede utilizar el carácter comodín "*", pero el carácter comodín solo se puede utilizar en el primer o último párrafo que consta de tres caracteres, o en el último párrafo que consta de dos caracteres.
server_name *.test.com www.test.*
También puede utilizar expresiones regulares, utilizando "~" como etiqueta inicial de la cadena de expresión regular.
server_name ~^www\d+\.test\.com$;
6.4 nombre_servidor: configuración del host virtual basada en la dirección IP
#La estructura sintáctica es la misma que la coincidencia basada en el nombre de dominio y no es necesario considerar comodines ni expresiones regulares.
server_name 192.168.1.1
6.5 pase_proxy
Este comando se utiliza para configurar la dirección del servidor proxy. Puede tener la forma de nombre de host, dirección IP y número de puerto.
# proxy_pass URL;
# URL 为被代理服务器的地址,可以包含传输协议、主机名称或IP地址加端口号,URI等。
proxy_pass http://www.test.com/uri;
índice 6.6
Esta directiva se utiliza para configurar la página de inicio predeterminada del sitio web.
#index filename ...;
#后面的文件名称可以有多个,中间用空格隔开。
index index.html index.jsp;
Siete, equilibrio de carga ngxin
7.1 Equilibrio de carga del algoritmo de sondeo
upstream OrdinaryPolling {
server 172.16.113.1:8081;
server 172.16.113.1:8082;
}
server {
listen 80;
server_name test.test.com;
access_log /home/lich/logs/rproxy_slb.access.log;
error_log /home/lich/logs/rproxy_slb.error.log;
location / {
proxy_pass http://OrdinaryPolling;
index index.html index.htm index.jsp;
# deny ip
# allow ip
}
}
7.2 Equilibrio de carga de sondeo ponderado proporcionalmente
upstream OrdinaryPolling {
server 172.16.113.1:8081 weight=2;
server 172.16.113.1:8082 weight=5;
}
server {
listen 80;
server_name test.test.com;
access_log /home/lich/logs/rproxy_slb.access.log;
error_log /home/lich/logs/rproxy_slb.error.log;
location / {
proxy_pass http://OrdinaryPolling;
# index index.html index.htm index.jsp;
# deny ip
# allow ip
}
}
7.3 Equilibrio de carga basado en enrutamiento IP
Se agregó la directiva ip_hash al bloque de directivas ascendentes. Esta instrucción le dice al servidor nginx que las solicitudes enviadas por clientes con la misma dirección IP se distribuirán al mismo servidor Tomcat para su procesamiento.
upstream OrdinaryPolling {
server 172.16.113.1:8081 weight=2;
server 172.16.113.1:8082 weight=5;
ip_hash;
}
server {
listen 80;
server_name test.test.com;
access_log /home/lich/logs/rproxy_slb.access.log;
error_log /home/lich/logs/rproxy_slb.error.log;
location / {
proxy_pass http://OrdinaryPolling;
# index index.html index.htm index.jsp;
# deny ip
# allow ip
}
}
7.4 Equilibrio de carga basado en el tiempo de respuesta del servidor
La carga se realiza de acuerdo al tiempo que tarda el servidor en procesar la solicitud, cuanto más rápido se procesa la solicitud, es decir, menor es el tiempo de respuesta, se asigna prioridad.
upstream OrdinaryPolling {
server 172.16.113.1:8081 weight=2;
server 172.16.113.1:8082 weight=5;
fair;
}
server {
listen 80;
server_name test.test.com;
access_log /home/lich/logs/rproxy_slb.access.log;
error_log /home/lich/logs/rproxy_slb.error.log;
location / {
proxy_pass http://OrdinaryPolling;
# index index.html index.htm index.jsp;
# deny ip
# allow ip
}
}