nginx以及nginx优化

目录

nginx概念

nginx的功能介绍

nginx的文件

nginx的常用命令

nginx.conf(主配置文件)

1.全局模块 

2.http模块

实验

1.统计访问状态

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

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

4.基于域名的nginx主机

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

6.基于端口的虚拟主机

7.多个配置文件

nginx优化

1.隐藏版本号(重要)

2.cpu绑定(重要)

 3.日志分割(重要)

修改用户和组(了解)

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

5.连接超时

6.页面压缩

7.TIME_WAIT状态的回收

防盗链


nginx概念

nginx——web服务器

http就是apache,在国内很少

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

nginx的功能介绍

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

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

3.动态内容处理,nginx并不能直接处理动态请求,可以通过中间件(php/tomcat)把动态请求转发给后端服务器

4.支持加密https

5.可以实现重定向

6.虚拟主机,一个nginx可以配置多个域名和站点

7.nginx自带缓存

8.性能可拓展,处理能力可以随时调整

nginx的应用场景:

1.静态页面

2.转发动态请求

3.反向代理,负载均衡

4.缓存服务

nginx的安装模块:--with-http_ssl_module \ 支持https的加密功能ss/tls

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

                              --with-http_realip_module \ 支持nginx获取客户端的真是ip地址

                              --with-http_stub_status_module \ 支持nginx获取访问状态信息的功能

                              --with-http_gzip_static_module \ 支持页面压缩功能

                             --with-pcre \ 支持prce库

                             --with-stream \ 支持4层代理的模块

                             --with-stream_ssl_module \ 支持对tcp连接的加密

                            --with-stream_realip_module 支持从代理协议中获取客户端的真是IP地址

nginx的文件

conf:配置文件目录 nginx.conf主配置文件

html:工作目录  50x.html  默认的访问错误打开的页面  index.html  默认的访问主页

logs:日志目录  访问日志,报错日志

sbin:nginx的二进制启动脚本

nginx的常用命令

nginx -t 检测配置文件的语法是否正确

nginx -v  显示nginx的版本 

nginx -V 显示版本和配置

nginx -s 信号  stop  关闭nginx

                      reload  重新加载nginx(如果更改了nginx配置文件,nginx -s reload 无需重启服)

nginx.conf(主配置文件)

/usr/local/nginx/conf/nginx.conf里面

日志查看 tail -f /usr/local/nginx/logs/error.log

1.全局模块 

#user nobody;

默认的程序用户是nginx,这里可以保持注释无需修改

worker_processes 1 ;

工作进程数,一般设置成服务器内核数的2倍(一般不超过8个,超过8个反而会降低性能)

pid /usr/local/nginx/run/nginx.pid; 

pid文件的位置

events {
    worker_connections  1024;
}

events模块,决定了nginx能够处理的连接数,连接数和worker_processes的数值相乘

Linux默认打开的文件数就是1024个

处理进程的过程必然涉及配置文件和展示页面,也就是涉及打开文件的数量

cd /usr/local/nginx/conf/

vim /etc/security/limits.conf    (Linux系统打开文件的最大数配置文件)

进入系统第一件是就是修改打开文件的最大数

2.http模块

http {

http模块的作用:转发和处理http请求,设置代理(正向代理,反向代理),缓存,定义日志格式,重定向配置

include mime.types; 

文件拓展名与文件类型的映射表。就是nginx能够打开的文件和支持的文件类型

default_type  application/octet-stream;

默认支持的文件类型(.html/.htm/.jsp/.js/.php)

 #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,也就是访问日志的格式,报错error.log也是一样的格式

#access_log  logs/access.log  main; 默认访问日志的存放路径

sendfile        on; 支持文件发送或者下载

#tcp_nopush     on; 默认就是异步非阻塞模式功能

keepalive_timeout  65; 连接保持的时间,单位是秒

#gzip  on;   gzip模块,谁知是否开启页面压缩功能(没啥用)

server { 开始web服务的模块

listen       80; nginx的默认监听端口

server_name  localhost; 配置站点的域名

 #charset koi8-r;  网页的默认字符集 /  charset utf-8; 显示中文

 location / {网页匹配的工作目录的地址和支持的打开页面的文件类型

root   html; root这里是家目录  是nginx工作目录的家目录   html就是/usr/local/nginx/html

面试题:root和alias之间匹配工作目录的区别-

root的匹配模式 是 拼接

root的工作目录,访问的url 是xy102

location /xy102 {

root  /opt/test1/;

匹配的是/opt/test1/xy102/这个目录下的文件

echo "内容"  > index.html  输入展示内容

alias匹配nginx的工作目录,路径是绝对路径

location /xy102 {

alias /opt/test1/xy102/;

alias 只能写在http模块当中server模块的location模块里面

root 可以写在server模块,也可以写在http,也可以写在location中

alias匹配工作目录,不能够使用重定向功能

nginx模块

1.全局模块

work_processes 1 指定进程数

events模块决定了能够处理的连接数

stream 四层代理模块

2.http模块 转发和处理http请求,设置代理(正向代理,反向代理),缓存,定义日志格式,重定向配置

在http模块当中,包含server模块,在http模块里面可以有多个server模块

在server模块当中包含location模块,在server模块当中可以有多个location模块

实验

1.统计访问状态

添加一个

location  /status {

stub_status on;(打开状态统计的功能)

access_log off;(关闭status的访问日志)

}

页面展示的结果:

Active connections  当前活动的连接数

server accepts handled requests 表示已经处理的连接数

三个数字  从左往右 表示:已经处理的连接数、成功的建立连接的次数、已经处理的请求数

Reading:0 Writing:1 Waiting:0

reading 表示服务器正在从客户端读取请求的数据

writing 表示服务端正在把响应数据发送给客户端

waiting 表示有连接处于空闲状态,等待新的请求

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

要先安装yum -y install httpd-tools (httpasswd的工具)

htpasswd -c /usr/local/nginx/passwd.db gfw

cd /usr/local/nginx

chown nginx passwd.db

chmod 400 passwd.db

cd conf/

vim nginx.conf  在localtion / 下面

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

展示结果

4.基于域名的nginx主机

做一个本地映射  vim /etc/hosts

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

新建虚拟网卡ifconfig ens33:0 192.168.233.100/24

6.基于端口的虚拟主机

7.多个配置文件

nginx优化

1.隐藏版本号(重要)

在http里面添加server_tokens off;

结果

另一种

cd nginx-1.22.0

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

make -j 4 && make install

systemctl restart nginx

2.cpu绑定(重要)

worker_cpu_affinity 0001 0010 0100 1000;

表示绑定cpu1、2、3、4

 3.日志分割(重要)

apache 是自带日志分割的,按天来进行收集日志;nginx没有自动分割的功能,所以要用脚本来实现日志分割

日志的位置

脚本

脚本代码:
#!/bin/bash
day=$(date -d "-1 day" "+%Y%m%d")
logs_path="/usr/local/nginx/logs/"
pid_path="/usr/local/nginx/run/nginx.pid"
mv /usr/local/nginx/logs/access.log ${logs_path}access-${day}.log

mv /usr/local/nginx/logs/error.log ${logs_path}error-${day}.log
kill -USR1 $(cat ${pid_path})
find ${logs_path} -mtime +30 exec rm -rf {} \;

结果

修改用户和组(了解)

vim /usr/local/nginx/conf/nginx.conf

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

插入图片

5.连接超时

一般修改为

6.页面压缩

gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;
支持压缩的类型

7.TIME_WAIT状态的回收

time_wait是tcp链接当中的一种状态,出现在四次挥手之后。处于等待状态,双方不再发送数据。

time_wait所占用的系统资源很小,数量比较小,完全可以忽略不计,但是太多了就有一定影响。

连接断开(四次挥手)之后,尽快的把time_wait状态的连接进行回收

netstat -n | awk '/^tcp/ {++s[$NF]} END {for (a in s) print a s[a]}  统计当前系统的连接状态

cd /usr/local/nginx/conf

vim /etc/sysctl.conf  文件配置

展示结果sysctl -p 

防盗链

配置nginx.conf文件

location ~* \.(jpg|gif|png)$ {

  valid_referers none blocked *.xy102.com xy102.com;

if ( $invalid_referer )  {

   #rewrite ^/ http://www.xy102.com/error.png;

    return 403;

}

}

步骤:

网页准备:
Web源主机(192.168.233.10)配置:
cd /usr/local/nginx/html
将game.jpg、error.png文件传到/usr/local/nginx/html目录下
vim index.html
清空所有内容然后添加
< img src="game.jpg"/>
</body>
</html>

做主地映射

echo "192.168.233.10 www.xy102.com" >> /etc/hosts 
echo "192.168.233.20 www.xy103.com" >> /etc/hosts 

盗链网站主机(192.168.233.20):
cd /usr/local/nginx/html
vim index.html
清空所有内容然后添加
< img src="http://www.xy102.com/game.jpg"/>
</body>
</html>

做本地映射

echo "192.168.233.10 www.xy102.com" >> /etc/hosts 
echo "192.168.233.20 www.xy103.com" >> /etc/hosts

在盗图网站(20)主机上进行浏览器验证
http://www.xy103.com

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值