Tutorial de configuración de CentOS7 Operation and Maintenance-Nginx
- Uno, descripción general de Nginx
- 2. Estado del servicio Nginx
- Tres, agregue el servicio del sistema del programa
- Cuatro, archivo de configuración principal de Nginx
- Cinco, configuración HTTP
- Seis, configuración de formato de registro
- Siete, estadísticas de estado de acceso
- Ocho, control de acceso Nginx
- Nueve, host virtual Nginx
Uno, descripción general de Nginx
Un Web
software de servicio ligero y de alto rendimiento
2. Estado del servicio Nginx
① Iniciar servicio
nginx -t
Verifique que la estructura de sintaxis del archivo de configuración sea correcta,
cat /usr/local/nginx/logs/nginx.pid
vista nginx
del PID
número
Más formas de ver el número de proceso
lsof -i: 80
netstat -natp | grep nginx
ss -tnlp | grep nginx
ps -ef | grep nginx
pgrep nginx
② Detener el servicio
kill
Seguido del pid
número killall
seguido del nombre del proceso
kill -3 <PID号>
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx
③ Servicio de sobrecarga
matar -1 <PID 号>
matar -s HUP <PID 号>
killall -1 nginx
killall -s HUP nginx
④ División de registro
Principio: cuando se cumplan determinadas condiciones, guarde y elimine los registros antiguos
kill -USR1 <PID号>
⑤ Actualización suave
kill -USR2 <PID号>
Tres, agregue el servicio del sistema del programa
Método 1: systemctl
echo '
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target' > /lib/systemd/system/nginx.service
Método 2: init.d
vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx 服务
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$COM
;;
stop)
kill -s QUIT ${cat PID}
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP ${cat PID}
;;
*)
exit 1
esac
exit 0
Agregue servicios del sistema y otorgue permisos de ejecución
chmod +x /etc/init.d/nginx
chkconfig --add nginx
Cuatro, archivo de configuración principal de Nginx
user_nobody
El usuario que ejecuta, si no se especifica durante la compilación, el valor predeterminado es nobdy
worker_processes 1
; el número de procesos de trabajo se puede configurar como 内核数 * 2
[Generalmente 1 es suficiente]
error_log logs/error.log;
La ubicación de la ubicación del
pid logs/nginx.pid PID
archivo de registro de errores
① Cómo mejorar el rendimiento
Configuración de eventos de E / S
events {
use epoll;
#2.6以上版本的系统核心建议使用epoll模型以提高性能
worker _connections 4095
#每个进程处理 4096 个连接
}
② ¿Cómo aumentar el número de conexiones por proceso?
Cuando la Linux
plataforma TCP
procesa conexiones de alta concurrencia , la cantidad máxima de conexiones concurrentes está sujeta a la
restricción del sistema sobre la cantidad de archivos que un usuario puede abrir al mismo tiempo en un solo proceso. TCP
Cree uno para cada conexión. socket
Cada socket
identificador es también un identificador de archivo.
ulimit -n 65535
Modifique temporalmente el número máximo de archivos que
ulimit -a
puede abrir cada proceso localmente. Puede ver el número máximo de archivos que puede abrir el usuario actual del sistema.[open files项]
Cinco, configuración HTTP
http {
##文件扩展名与文件类型映射表
include mime.types;
##默认文件类型
default_type application/octet-stream;
##日志格式设定
#log_format main '$remote_ addr - $remote. user [stime_ local] "$request" '
# '$status $body_ bytes_ sent "Shttp_ referer" '
# "$http_user_agent" "$http_x_forwarded_for"';
##访问日志位置
#access_Log logs/access.log main;
#支持文件发送(下载)
sendfile on;
##此选项允许或禁止使用socket的TCP_CORK的选项( 发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
#tcp_nopush on;
##连接保持超时时间,单位是秒
#keepalive_timeout 0;
keepalive.timeout 65;
##gzip模块设置,设置是否开启gzip压缩输出
#gzip on;
#Web服务的监听配置
##Web服务的监听配置
server (
##监听地址及端口
listen 80;
##站点域名,可以有多个,用空格隔开
server.name www.benet.com;
##网页的默认字符集
charset utf-8;
##根目录配置
location / {
##网站根目录的位置/usr/local/nginx/html
root html;
##默认首页文件名
index index.html index.php;
}
##内部错误的反馈页而
error_page 500 502 503 504 /50x.html;
#错误页而配置
location = /50x.html {
root html;
}
}
}
Seis, configuración de formato de registro
$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
$remote_user: 用来记录客户端用卢名称;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url与http协议;
$status: 用来记录请求状态,成功是200;
$body_bytes_sent: 记录发送给客户端文件主体内容大小;
$http_referer: 用来记录从那个页面链接访问过来的;
$http_user_agent: 记录客户浏览器的相关信息;
通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的IP地址。反问代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
##location常见配置指令,root、alias、proxy_pass
root(根路径配置): 请求www.benet.com/1.jpg,会返回文件/usr/local/nginx/html/test/1.jpg
alias(别名配置): 请求ww . benet.com/test/1.jpg,会返回文件/usr/local/nginx/html/1.jpg
proxy_pass(反向代理配置>;
proxy_pass http://127.0.0.1:8080/; 会转发请求到http://127.0.0.1:8080/1.jpg
proxy_pass http://127.0.0.1:8080;
Siete, estadísticas de estado de acceso
Comprueba si hay HTTP_STUB_STATUS
módulos
nginx -t
Ingrese al nginx
archivo de configuración principal y agreguestub_status
cd /usr/local/nginx/conf
cp nginx.conf{
,.bak}
vim /usr/local/nginx/conf/nginx.conf
.....
http {
.....
server {
listen 80;
server_name www.benet.com;
charset utf-8;
location / {
root html;
index index.html index.html;
}
##添加stub_status 配置##
location /status {
#访问位置为/status
stub_status on; #打开状态统计功能
access_log off; #关闭此位置的日志记录
}
}
}
Ocho, control de acceso Nginx
① Control de acceso basado en autorización
Generar archivos de autenticación de contraseña de usuario
también se pueden generar en línea
yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db fox
Si elimina los permisos de los usuarios normales, debe establecer el propietario del archivo
chown nginx /usr/local/nginx/passwd.db
chmod 700 /usr/local/nginx/passwd.db
Modifique el directorio correspondiente del archivo de configuración principal y agregue elementos de configuración de autenticación
vim /usr/local/nginx/conf/nginx.conf
......
server {
location / {
......
##添加认证配置##
auth_basic "secret" ;
auth_basic_user_file /usr/local/nginx/passwd.db;
}
}
② Control de acceso basado en el cliente
Las reglas de control de acceso son las siguientes:
denegar IP / segmento de IP: denegar el acceso de cliente a una determinada IP o segmento de IP.
Permitir segmento de IP / IP: permitir que las
reglas de acceso de cliente de una determinada IP o segmento de IP se ejecuten de arriba a abajo, y detente si coincide. Ya no coincide
vim /usr/local/nginx/conf/nginx.conf
server {
location / {
#添加控制规则
deny 192.168.0.10;
#拒绝访问的客户端IP
allow all;
#允许其它IP客户端访问
}
}
systemctl restart nginx
Nueve, host virtual Nginx
① Alojamiento virtual basado en nombre de dominio
echo "192.168.0.50 www.benet.com www.accp.com" >> /etc/hosts
►Preparar documentos web para alojamiento virtual
mkdir -p /var/www/html/accp
mkdir -p /var/www/html/benet
echo "<h1>www.accp.com</h1>" > /var/www/html/accp/index.html
echo "<h1>www.benet.com</h1>" > /var/www/html/benet/index.html
►Modificar el archivo de configuración de Nginx
vim /usr/local/nginx/conf/nginx.conf
http {
server {
listen 80;
server_name www.accp.com;
charset utf-8;
access_log logs/www.accp.com.access.log;
location / {
root /var/www/html/accp;
index index.html index.html;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
root html;
}
}
server {
listen 80;
server_name www.benet.com;
charset utf-8;
access_log logs/www.benet.access.com.log;
location / {
root /var/www/html/benet;
index index.html index.html;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
root html;
}
}
}
nginx -t
systemctl restart nginx
② Host virtual basado en IP
ifconfig ens33:0 192.168.0.60/24
vim /usr/local/nginx/conf/nginx.conf
http {
server {
listen 192.168.0.50:80;
server_name www.benet.com;
charset utf-8;
access_log logs/www.benet.access.log;
location / {
root /var/www/html/benet;
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
root html;
}
}
server {
listen 192.168.0.60:80;
server_name www.accp.com;
charset utf-8;
access_log logs/www.accp.access.log;
location / {
root /var/www/html/accp;
index index.html index.html;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
root html;
}
}
}
nginx -t
systemctl restart nginx
③ Host virtual basado en puerto
vim /usr/local/nginx/conf/nginx.conf
http {
server {
listen 192.168.0.50:233;
server_name www.accp.com;
charset utf-8;
access_log logs/www.accp.access.log;
location / {
root /var/www/html/accp;
index index.html index.html;
}
error_page 500 502. 503 504 /50x.html;
location = 50x.html{
root html;
}
}
server {
listen 192.168.0.50:8080;
server_name www.benet.com;
charset utf-8;
access_log logs/www.benet.access.log;
location / {
root /var/www/html/benet;
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
root html;
}
}
}
nginx -t
systemctl restart nginx.service