nginx配置文件详解

一、如何给配置文件加高亮?

  • 在讲解配置文件之前,我们给配置文件加高亮方便配置文件的查看及排错
[root@server1 contrib]# cd        ##必须切换到主目录下
[root@server1 ~]# mkdir .vim
[root@server1 ~]# cd nginx-1.14.2/contrib/
[root@server1 contrib]# cp -r vim/* ~/.vim
[root@server1 nginx-1.14.2]# cd /usr/local/nginx/conf/
[root@server1 conf]# vim nginx.conf

在这里插入图片描述

二、如果查看nginx的版本和编辑加载过的模块

[root@server1 ~]# nginx -V     ##看版本以及加载过的模块
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) 
configure arguments: --prefix=/usr/local/nginx --with-http_realip_module
[root@server1 ~]# nginx -v    ##查看版本
nginx version: nginx/1.14.2

三、配置文件中典型参数

#Nginx的worker进程运行用户以及用户组
user  nobody nobody;


#Nginx开启的进程数,建议为CPU的核数
worker_processes  1;
#worker_processes auto;


#以下参数指定了哪个cpu分配给哪个进程,一般来说不用特殊指定。如果一定要设的话,用01指定分配方式.
#这样设就是给1-4个进程分配单独的核来运行,出现第5个进程是就是随机分配了。eg:
worker_processes 4     #4CPU 
worker_cpu_affinity 0001 0010 0100 1000

#定义全局错误日志定义类型,[debug|info|notice|warn|crit]
error_log  logs/error.log  info;

#指定进程ID存储文件位置
#pid        logs/nginx.pid;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
#vim /etc/security/limits.conf
#  *                soft    nproc          65535
#  *                hard    nproc          65535
#  *                soft    nofile         65535
#  *                hard    nofile         65535
worker_rlimit_nofile 65535;  

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、企业中打包日志

  • 企业中要实现打包前一天的日志,如何实现呢?
#打开nginx

[root@server1 ~]# cd /usr/local/nginx/logs/
[root@server1 logs]# ls             ##我们要打包access.log
access.log  error.log  nginx.pid  nginx.pid.oldbin

#首先我们可以先实现打出前一天的日期
[root@server1 logs]# date +%F -d -1day     打出前一天的日期信息
2019-02-20
[root@server1 logs]# mv access.log `date +%F -d -1day`_access.log
[root@server1 logs]# ls 
2019-02-20_access.log  error.log  nginx.pid  nginx.pid.oldbin
[root@server1 logs]# /usr/local/nginx/sbin/nginx -s reopen
[root@server1 logs]# ls
2019-02-20_access.log  access.log  error.log  nginx.pid  nginx.pid.oldbin

在这里插入图片描述

五、对客户端并发量,下载速度的限制

  1. 限制客户端请求的并发量为1
  • 编辑配置文件
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf
 34     limit_conn_zone $binary_remote_addr zone=addr:10m;

 48         location /download/ {    # download是客户端访问nginx的一个发布目录
 49             limit_conn addr 1;    # 并发量为1
 50         }

在这里插入图片描述

  • 在/usr/local/nginx/html/下创建目录download/,并放入一个图片
[root@server1 conf]# cd /usr/local/nginx/html/
[root@server1 html]# mkdir download
[root@server1 html]# cd download/
[root@server1 download]# ls
vim.jpg
[root@server1 download]# du -h vim.jpg 
444K	vim.jpg
  • 重启配置文件,之后每次编辑完配置文件都要重启,不再赘述
  • 测试
    模拟客户端的请求,并发量为1,没有错误请求
[root@server1 download]# ab -c 1 -n 10 http://172.25.79.1/download/vim.jpg

在这里插入图片描述
如果并发为10 ,即-c 10,则错误为

  1. 限制客户端下载速率为50k
 49         location /download/ {
 50             limit_conn addr 1;
 51             limit_rate 50k;
 52         }

在这里插入图片描述

  • 测试:
[root@server1 download]# ab -c 1 -n 10 http://172.25.79.1/download/vim.jpg

显示80秒左右
在这里插入图片描述
3.

 33     #gzip  on;
 34     limit_conn_zone $binary_remote_addr zone=addr:10m;
 35     limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
       说明:区域名称为one(自定义),占用空间大小为10m,平均处理的请求频率不能超过每秒一次
 49         location /download/ {
 50             limit_conn addr 1;
 51             #limit_rate 50k;
 52             limit_req zone=one burst=5;  #burst用于指定最大突发请求数。许多场景下,单一地限制rate并不能满足需求,设置burst,可以延迟处理超过rate限制的请求。
 53         }

在这里插入图片描述

  • 测试:
[root@server1 download]# ab -c 1 -n 10 http://172.25.79.1/download/vim.jpg

9秒左右
在这里插入图片描述

六、图片共享

  1. 将nginx关掉,重新编译,加载新的模块
[root@server1 nginx-1.14.2]# nginx -s stop

[root@server1 ~]# cd nginx-1.14.2
[root@server1 nginx-1.14.2]# make clean   ##重新编译之前要make clean

[root@server1 nginx-1.14.2]# yum install -y gd-devel-2.0.35-26.el7.x86_64.rpm     ##安装
[root@server1 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_image_filter_module=dynamic      ##添加图形动态模块
[root@server1 nginx-1.14.2]# make     ##不要make install(除了第一次编译)
  1. 将新的二进制文件替换原来的nginx二进制文件
[root@server1 nginx-1.14.2]# cd objs/
[root@server1 objs]# cp nginx /usr/local/nginx/sbin/nginx
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y
  1. 创建新的模块目录,并将图像模块放在目录下
[root@server1 objs]# mkdir /usr/local/nginx/modules
[root@server1 objs]# ls
autoconf.err        ngx_http_image_filter_module_modules.c
Makefile            ngx_http_image_filter_module_modules.o
nginx               ngx_http_image_filter_module.so
nginx.8             ngx_modules.c
ngx_auto_config.h   ngx_modules.o
ngx_auto_headers.h  src
[root@server1 objs]# cp ngx_http_image_filter_module.so /usr/local/nginx/modules/
  1. 编写配置文件
[root@server1 objs]# cd /usr/local/nginx/conf/
[root@server1 conf]# vim nginx.conf

在这里插入图片描述
在这里插入图片描述
5. 开启nginx,并重新加载配置文件

[root@server1 conf]# nginx 
[root@server1 conf]# nginx -s reload   ##之后不再赘述
  1. 创建download目录,并放入图片
[root@server1 conf]# cd /usr/local/nginx/html
[root@server1 html]# mkdir download
[root@server1 html]# cd download/
[root@server1 download]# ls
vim.jpg
  1. 在浏览器输入172.25.79.1/download/vim.jpg 可以看到图片
    在这里插入图片描述
  2. 但是我们发现,客户想下载图片,就需要在浏览器输入的时候加上图片名称,这样显然是不合理的
  • 我们继续修改配置文件
    在这里插入图片描述
  1. 再在浏览器输入http://172.25.79.1/download/
    在这里插入图片描述
  • 这样,我们可以在download目录下可以放很多东西,客户想看哪个进行选择即可。
  1. 我们还可以设置图片的额报错期限
  • 再编辑配置文件
        location ~ .*\.(jpg|png|css|js)?$ {
                expires 30d;    ##设置为30}

在这里插入图片描述

  • 测试
[root@foundation19 ~]# curl -I 172.25.79.1/download/vim.jpg
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Fri, 22 Feb 2019 05:18:07 GMT
Content-Type: image/jpeg
Content-Length: 453575
Last-Modified: Fri, 20 May 2016 03:53:06 GMT
Connection: keep-alive
ETag: "573e8a22-6ebc7"
Expires: Sun, 24 Mar 2019 05:18:07 GMT       ##这里会显示到期日
Cache-Control: max-age=2592000
Accept-Ranges: bytes

七、实现https加密

  1. 关掉原来的nginx,重新编译,添加ssl模块
[root@server1 objs]# nginx -s stop

重新编译:
[root@server1 nginx-1.14.2]# make clean
rm -rf Makefile objs
[root@server1 nginx-1.14.2]# yum install -y openssl-devel 
[root@server1 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_image_filter_module=dynamic --with-http_ssl_module

[root@server1 nginx-1.14.2]# make
  1. 将新生的二进制文件替代原来的,并且要再次将图像模块放入modules目录下
[root@server1 objs]# cp nginx /usr/local/nginx/sbin/nginx
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y
 
[root@server1 objs]# ls
autoconf.err        ngx_http_image_filter_module_modules.c
Makefile            ngx_http_image_filter_module_modules.o
nginx               ngx_http_image_filter_module.so
nginx.8             ngx_modules.c
ngx_auto_config.h   ngx_modules.o
ngx_auto_headers.h  src
[root@server1 objs]# cp ngx_http_image_filter_module.so /usr/local/nginx/modules/
cp: overwrite ‘/usr/local/nginx/modules/ngx_http_image_filter_module.so’? y
  1. 在cd /etc/pki/tls/cd cert目录下,生成证书
[root@server1 certs]# cd /etc/pki/tls/certs/
[root@server1 certs]# make cert.pem

在这里插入图片描述

  • 将锁子和钥匙放在nginx的配置文件目录下
[root@server1 certs]# cp cert.pem /usr/local/nginx/conf/
  1. 首先我们先可以测一下http的正常访问
  • 编写配置文件
    在这里插入图片描述
  • 开启nginx
[root@server1 conf]# nginx  
[root@server1 conf]# nginx -s reload
  • 添加域名解析
[root@server1 conf]# vim /etc/hosts
172.25.79.1     www.westos.org
  • 创建/web,并编写测试页
[root@server1 /]# cd 
[root@server1 ~]# mkdir /web
[root@server1 ~]# cd /web/
[root@server1 web]# vim index.html
www.westos.org
- 测试:访问正常
[root@server1 web]# curl www.westos.org
www.westos.org
  1. 重新编写配置文件,实现http—>https
    在这里插入图片描述
  • 检测语法错误,并重新加载配置文件
[root@server1 certs]# nginx -t
[root@server1 certs]# nginx -s reload
  1. 测试
  • 在测试主机中添加域名解析
[root@foundation19 ~]# cat /etc/hosts
172.25.79.1 www.westos.org     

八、重定向

  1. 将westos.org重定向到https://www.westos.org
server {
        listen 80;
        server_name www.westos.org;
        rewrite ^/(.*)$ https://www.westos.org/$1;     ##$1表示后面可以跟文件,否则会报错
  • 测试(302表示重定向)
[root@foundation79 ~]# curl -I www.westos.org

在这里插入图片描述
但是我们发现当访问 www.westos.org/test.jpg 的时候,就不能正确访问转到 https://www.westos.org/test.jpg
在这里插入图片描述

  • 添加$1:
    在这里插入图片描述
    这样就可以成功了
    在这里插入图片描述
  • 如果后面加permanent参数,表示永久重定向
    在这里插入图片描述
    测试:
    在这里插入图片描述
    在这里插入图片描述
  1. 将www.westos.org/bbs/index.html重定向到 https://bbs.westos.org/index.html
  • 编辑配置文件
    在这里插入图片描述
  • 创建/bbs目录,并编写测试页
[root@server1 certs]# mkdir /bbs
[root@server1 certs]# cd /bbs/
[root@server1 bbs]# vim index.html
bbs.westos.org
  • 在测试主机添加解析
[root@foundation79 ~]#
172.25.79.1 www.westos.org bbs.westos.org
[root@foundation79 ~]# curl -I www.westos.org/bbs

在这里插入图片描述
和上面的问题一样,在网址后添加测试页,就会报错
在这里插入图片描述
修改如下:
在这里插入图片描述 再次测试则成功:
在这里插入图片描述

  1. 将bbs.westos.org转到http://www.westos.org/bbs下
  • 直接将/bbs这个目录放到/web下的方式:
[root@server1 bbs]# cd
[root@server1 ~]# cd /web/
[root@server1 web]# cp -r /bbs/ /web/
[root@server1 web]# ls
bbs  index.html  test.html
  • 编写配置文件
    在这里插入图片描述
  • 测试:
    在这里插入图片描述

九、防盗链

  1. 测试端添加解析
[root@foundation79 images]# vim /etc/hosts
172.25.19.1 www.westos.org bbs.westos.org  
172.25.19.2 daolian.westos.org    ##添加此处
  1. 新安装一台nginx主机,并编写配置文件
    [root@server2 conf]# vim /usr/local/nginx/conf/nginx.conf
    在这里插入图片描述
    在这里插入图片描述
  2. server2添加解析,并创建/web目录,编写测试页
[root@server2 web]# cat /etc/hosts
172.25.79.2	server2 daolian.westos.org

[root@server2 ~]# mkdir /web
[root@server2 ~]# cd  /web/
[root@server2 web]# vim index.html
<html>
<body>
<br>盗链图片</br>
<img src="http://www.westos.org/vim.jpg">       ##盗取server1上的图片vim.jpg
</body>
</html>

在这里插入图片描述
4. 测试:
在这里插入图片描述
那么我们如何防盗链呢?
5. 在server1上重新编写配置文件
在这里插入图片描述
2. 浏览器再次此时,这回图片裂开了,说明防盗链成功在这里插入图片描述
如果我们想给客户返回一张图片,而不是裂开的图片,又该怎么办呢?

  1. 将我们想放的图片放到/bbs下
[root@server1 ~]# cd /bbs/
[root@server1 bbs]# ls
daolian.jpg  index.html         ##这个daolian.jpg是我想放的图片
  1. 修改配置文件如下:
    在这里插入图片描述
  2. 再次测试:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值