nginx的vim nginx.conf配置文件内容详解及实验,nginx的优化和防盗链

一、nginx网络服务器:

1. nginx是开源的,是一款高性能,轻量级的web服务软件;稳定性高,而且版本迭代比较快;修复bug速度比较快,安全性高;消耗资源低,http的请求并发连接,单台服务器可以支持30000-50000个并发请求(系统资源全部分配给nginx);单个节点的nginx一般支持20000个并发请求
2.nginx的功能:

静态文件服务:静态页面,可以直接提供静态文件服务,html css jsp ,处理静态页面的响应速度快,效率很好

代理:正向代理,反向代理,可以实现负载均衡,高可用和故障转移。

动态处理:nginx不能直接处理动态请求,但是可以通过中间件(例如tomcat)把动态请求转发给后端服务器

支持加密的http及https

可以实现重定向

虚拟主机:一个nginx可以配置多个域名和站点。

nginx自带缓存

性能可扩张:处理能力可以随时调整

3.nginx的应用场景:

静态页面;转发动态请求;反向代理,负载均衡;缓存服务

二、nginx的安装:

1.配置安装包:nginx-1.22.0.tar.gz

2.先关闭防火墙和安全机制:

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

3.然后安装依赖环境;

yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel

4.创建程序用户:useradd -M -s /sbin/nologin nginx

5.安装包解压:tar -xf nginx-1.22.0.tar.gz

6.给解压包权限:chown nginx.nginx nginx-1.22.0

7.进入cd nginx-1.22.0目录

8.开始配置:

./configure --prefix=/usr/local/nginx \ #指定安装目录

--user=nginx \ #指定运行用户

--group=nginx \ #指定运行组

--with-http_ssl_module \ #开启对http的ssl加密支持

--with-http_v2_module \ #支持http2.0协议

--with-http_realip_module \ #允许nginx获取客户端的真实ip

--with-http_stub_status_module \ #启动了stud_status模块,可以获取nginx的访问和状态信息

--with-http_gzip_static_module \ #支持压缩文件内容 图片

--with-pcre \ #相当于动态库

--with-stream \ #开启tcp/udp的代理模块支持,也就是四层转发

--with-stream_ssl_module \ #支持四层转发的ssl加密

--with-stream_realip_module #nginx可以从四层转发的头部信息中获取客户端的真实ip

9.编译安装make -j 4 && make install

10.进入软件目录:cd /usr/local

11.修改nginx权限:chown nginx.nginx nginx

12.ln -s /usr/local/nginx/sbin/nginx /usr/sbin

13.修改配置文件: vim /lib/systemd/system/nginx.service

[Unit]

Description=nginx - high performance web server

Documentation=http://nginx.org/en/docs/

After=network-online.target remote-fs.target nss-lookup.target

Wants=network-online.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/run/nginx.pid

#注意文件位置,如果不对 启动不了

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

#注意启动文件位置

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s TERM $MAINPID

[Install]

WantedBy=multi-user.target

14.进入nginx目录下:cd /usr/local/nginx

conf:保存nginx的所有配置文件,其中nginx.conf是nginx的主配置文件

html:保存nginx的web文件,.html结尾的文件,图片

50x.html:是nginx默认的报错提示页面

logs:保存日志的目录,路径可以改

access.log:记录的是访问日志记录

error.log:记录报错日志403 404 500

sbin:放的是nginx的二进制启动脚本

15.在nginx目录下创建run目录:mkdir run

给run权限:chown nginx.nginx run

16.进入conf目录 :cd conf

17.修改配置文件:vim nginx.conf

pid /usr/local/nginx/run/nginx.pid #找到 pid开头的行进行修改

18.改配置文件,一定要重启服务:systemctl daemon-reload

重新加载配置:systemctl start nginx.service

19.检测nginx配置文件:nginx -t

20.查看版本:nginx -v

三、nginx命令:

nginx -t:检测nginx配置文件以及配置文件语法是否正确

nginx -v:只查看版本

nginx -V:查看版本又查看nginx支持的配置模块

nginx -s:给nginx主程序发送信号,不能开启nginx服务

nginx -s信号类型:stop(关闭)、restart、reload(重新加载nginx,如果更改了配置文件,nginx-s reload无需重启服务)

四、vim nginx.conf配置文件内容详解:

1.全局模块:worker_processes 1;:指定工作进程数,设置成服务器内核数的2倍(一般不超过8个,超过8个会降低性能);修改进程数在/etc/security/limtes.conf最后一行添加(* soft nproc 65535 能打开的进程最大数的软限制是65535;*hard nproce 65535能打开的进程最大数是65535;* soft nofile 65535 进程打开文件的最大值也是65535;* hard nofile 65535进程最大数的硬限制65535)修改之后重启后才生效。

2.events模块:决定了nginx能够处理的连接数,连接数和worker_processes的数值相乘,默认是1024个(处理进程)

3.stream:四层代理模块

4.http模块:转发和处理http请求,主要处理静态页面,设置正向代理和反向代理,缓存,定义日志格式,重定向配置。(http里可以包含多个server模块,一个server模块就是一个主机)

include:文件扩展名于文件类型的映射表,nginx能够打开的文件和支持的文件类型。

default_type:默认支持的文件类型(.html .htm)

log_format:日志格式,记录了access.log,访问日志的格式,error.log也是一样的格式

access_log:默认的访问日志的存放路径

sendfile on:支持文件发送和下载

tcp-nopush on:默认就是异步非阻塞模式功能(每个客户可以同时向服务器发送信息,各不受影响)

keepalive_timesout 65:连接保持的时间,单位为秒

gzip on:开启页面压缩功能

5.server模块(在events模块,是开启web服务的模块;http里可以包含多个server模块,一个servermo'kuai):listen 80:nginx的默认监听端口为80;server_name :配置站点的域名;charset koi8-r:网页的默认字符集,改为charset utf-8默认支持中文;accesss_log:网页匹配的工作目录的地址和支持的打开页面的文件类型;

location / :(location模块)表示nginx配置文件的家目录,默认就是/

root html:nginx工作目录的家目录,默认就是/usr/local/nginx/html;alias:也是匹配nginx的工作目录。

在server模块中可以有多个location模块

6.root和alias之间匹配的都是nginx工作目录,其区别:

root的匹配模式相当于拼接(在root的工作目录,访问的就是uri/下的内容,可以写作为location /xy101 root /opt/test),可以写在server模块也可以写在http里,也可以写在location

alias匹配nginx工作目录的路径是绝对路径,只能写在http模块当中server模块的location模块里面,不能够使用重定向功能。

练习

五、实验

1.统计nginx的访问状态

2.基于密码的授权进行访问控制

先安装yum -y install httpd-tools #httppasswd的工具

3.基于客户端的访问控制 ,也就是根据ip地址来进行控制

4.基于域名的nginx主机

vim /etc/hosts

5.基于多个域名的nginx主机

6.基于ip地址的虚拟主机

同时修改两个server模块的端口号

7.基于端口实现多个虚拟主机

8.多个配置文件:

conf.d:不是固定的,可以根据自己喜好起名

六、nginx的优化

1.隐藏版本号

2.修改用户及用户组

3.设置页面的缓存时间,主要是针对动态页面及图片缓存

4.日志分割:apache是自带日志分割的,按天来进行收集日志,但是nginx没有日志分割。

5. 更改进程数设置cpu绑定**(重点)**

6.连接超时

7.配置页面压缩

8.回收TIME_WAIT:time_wait是tcp连接当中的一种状态,出现在四次挥手之后;处于等待状态,双方不再发送数据。time_wait所占用的系统资源很小,完全可以忽略不记,但是太多了,就有一定的影响,进行连接断开,尽快的把time_wait状态连接进行回收。

统计当前系统的连接状态

七、 防盗链

相关推荐
传而习乎42 分钟前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
soulteary43 分钟前
突破内存限制:Mac Mini M2 服务器化实践指南
运维·服务器·redis·macos·arm·pika
运维&陈同学2 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
是阿建吖!2 小时前
【Linux】进程状态
linux·运维
明明跟你说过3 小时前
Linux中的【tcpdump】:深入介绍与实战使用
linux·运维·测试工具·tcpdump
Mr_Xuhhh4 小时前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
朝九晚五ฺ11 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
Kkooe12 小时前
GitLab|数据迁移
运维·服务器·git
久醉不在酒13 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
虚拟网络工程师14 小时前
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
运维·服务器·网络·数据库·mariadb