栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

【web服务】lnmp服务详解

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【web服务】lnmp服务详解

文章目录
  • 前言
  • 一、定义
  • 二、Nginx优势
  • 三、Nginx原理与应用
    • 3.1 原理
    • 3.2 应用
  • 四、LNMP部署
  • 五、Nginx配置详解(nginx.conf)
    • 5.1 全局配置
    • 5.2 性能配置(events)
    • 5.3 网页配置(http)
  • 六、Nginx优化
    • 6.1 配置优化
      • 6.1.1 版本号隐藏
      • 6.1.2 设置防盗链
      • 6.1.3 增加并发量/绑核
      • 6.1.4 设置长链接
      • 6.1.5 添加缓存
      • 6.1.6 压缩传输
      • 6.1.7 日志分割
    • 6.2 内核优化
  • 五、思维导图
  • 六、结语


前言

本博客内容仅为记录博主思路,仅供参考,一切以自己实践结果为准。


一、定义

文章核心内容定义。

二、Nginx优势
  • 量级轻、配置简单
  • 成本低廉且开源
  • 内存消耗低、10个Nginx约消耗150M
  • 稳定性搞、宕机概率小
  • 非阻塞、能处理高并发,约2-3w
  • 有自我检查功能、可停用宕机服务器

三、Nginx原理与应用 3.1 原理
  • 读取Nginx主配置文件:nginx.conf
  • 调用fork函数创建子进程
  • 子进程竞争accept链接
  • 根据时间处理函数进行数据交换
  • 主动/被动关闭链接

3.2 应用
  • http静态页面处理服务器
  • 虚拟主机
  • 反向代理
  • 安全管理

四、LNMP部署

一键部署LNMP脚本

五、Nginx配置详解(nginx.conf) 5.1 全局配置
vim /usr/local/nginx/conf/nginx.conf

#user nobody;				#运行用户,若未设置运行用户,则默认用户为nobody
worker_processes 1;			#工作进程数量,一般设置与cpu内核数相同
#error_log logs/error.log;  #取消注释错误日志存放位置
#pid logs/nginx.pid;		#取消注释后进程PID号存放位置

5.2 性能配置(events)
use epoll;					#添加epoll模型,提高性能
worker_connections 4096; 	#设置每个进程处理的最大连接数注:仍需考虑系统能打开的最大文件数限制(每个链接都会打开一个socket句柄文件);
#ulimit -a 查看当前系统最大同时打开文件数
#ulimit -n 65535 临时修改系统最大打开文件数为65535
#vim /etc/security/limits.conf 永久修改系统最大打开文件数,需重启服务器生效(因此需要同步临时修改,做到不重启也能生效)
#添加 * soft nofile 65535 *表示所有用户,对所有用户软限制为65535最大连接数
#添加 * hard nofile 65535 *表示所有用户,对所有用户硬限制为65535最大连接数

5.3 网页配置(http)
include mime.types;
#文件扩展名与文件类型映射表
default_tyoe 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  logs/access.log  main;
#日志存储位置

#keepalive_timeout  0;
keepalive_timeout  65;
#长链接时间设置

#gzip  on;
#gip模块,设置是否开启gizp压缩传输;

#子模块,设置web服务的监听配置
server{
listen       80;
#设置监听地址和端口,例:192.168.13.10:80

server_name  localhost;
#站点域名,可以有多个,例:www.han.com www.wang.com

#charset utf-8;
#默认字符集,utf-8为万国字符集(通用的意思)

  #server子配置,设置客户端访问匹配规则(普通)
  location {
  root   html;
  #网站首页根目录
  index  index.html index.htm;
  #网站首页自动加载根目录中对应文件的内容,优先度从左到右
  }
  
  #server子配置,设置客户端访问匹配规则(正则)
  location ~* (jpg|png|avi)$ {
  #~代表采用正则表达式,*表示忽略大小写
  rewrite /usr/local/nginx/html/steal.jpeg
  #凡是复合匹配规则的,路径重写为新路径
  }
error_page   500 502 503 504  /50x.html;
#网站首页错误页配置,显示内容及路径
}

六、Nginx优化 6.1 配置优化 6.1.1 版本号隐藏
http{
server_tokens off;	
#http配置中添加tokens模块,可选择关闭版本号显示,也可选择修改显示的版本
}

6.1.2 设置防盗链
通过匹配访问路径,rewrite重写打到防盗效果
6.1.3 增加并发量/绑核
cat /proc/cpuinfo | grep -c "physical id"
#查看cpu核数
ps aux | grep nginx
#查看nginx主进程中有几个子进程

worker_processes  2;
#修改nginx.conf中分配给nginx的cpu线程数,一般与cpu线程总数相同或者2倍
worker_cpu_affinity 01 10;
#绑核,防止产生cpu惊醒现象,此时为2核的配置,若是4核则绑核的配置为 0001 0010 0100 1000;

worker_connections  1024;
#设置每个线程数所能处理的最大连接数

修改系统最大打开文件数的限制(Linux内核)
6.1.4 设置长链接 6.1.5 添加缓存
server{
	location ~ .(gif|jpg|png) {
		expires 1d;
		#调用expires模块,将匹配的内容缓存1天
	}
}

6.1.6 压缩传输
 
6.1.7 日志分割 
#!/bin/bash
# Filename: fenge.sh

day=$(date -d "-1 day" "+%Y%m%d")
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"

[ -d $logs_path ] || mkdir -p $logs_path 	
通过-d判断日志目录是否存在,若不存在则创建目录

mv /usr/local/nginx/logs/access.log ${logs_path}/kgc.com.$day
mv移动日志文件并重命名

kill -USR1 $(cat $pid_path)
kill -USR1平滑重载Nginx服务,重新创建日志文件

find $logs_path -mtime +30 -exec rm -rf {} ;
find查找30天以上的日志,通过-exec传参删除

chmod +x /opt/fenge.sh
crontab -e
0 1 * * * /opt/fenge.sh
赋予脚本执行权限,并设置每天执行一次

6.2 内核优化 五、思维导图 六、结语

总结:想要学得好,唯有多敲多练,最开始的时候就是抄脚本,后期可根据需求独立盲写脚本。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884804.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号