nginx核心功能

1. nginx核心功能

1.1. 虚拟主机

虚拟主机:相当于是1个网站,在ngx中通过server{}区域实现.

ngx中虚拟主机有不同的类型(配置不同)

1.1.1. 分类

虚拟主机的分类说明应用场景
基于域名的虚拟主机不用域名访问不用的站点listen 80生产环境最常用的(域名不同端口是80,443)
基于端口的虚拟主机不同端口访问不同的站点listen 8080保护,设置特殊端口1024以上8888 18888
基于ip的虚拟主机不同ip访问不同的站点listen 172.16.1.7:8080保护,用户只能通过某个ip连接进来。用来限制网站只能通过指定的ip进行访问内网ip,vpn,ip

1.1.2. 基于域名的虚拟主机

搭建流程:

1.准备子配置文件与检查语法

2.准备目录

3.准备代码,解压过去.

4.hosts解析与调试

不同域名访问不同的主机.

案例02: 创建conf.oldboylinux.cn网站

站点目录/app/code/conf/

书写配置文件.

1.完成后不创建站点目录进行访问看看报什么错误.

2.创建站点目录后再访问看看报什么错误.

3.创建首页文件和内容,访问看看显示什么.

1.2. 创建game.weiwei.cn网站

[root@web01 ~]# cat /etc/nginx/conf.d/game.weiwei.conf 
server {
  listen 8080;
  server_name game.weiwei.cn;
  root /app/code/game/;
  location / {
    index index.html;  
  }
}

nginx -t 
systemctl reload nginx 
mkdir -p /app/code/game/
unzip FC小霸王怀旧游戏机-HTML源码.zip -d /app/code/game/

hosts文件中写入:
10.0.0.7  game.weiwei.cn

命令行访问:
curl -H Host:game.wei.cn 10.0.0.7
curl -H Host:game.wei.cn 10.0.0.7:8080
curl -H Host:game.wei.cn 172.16.1.7:8080

-H修改请求头里面的内容.

1.3. nginx日志

给每个虚拟主机指定自己独立的错误日志.

给每个虚拟主机指定自己独立的访问日志.

日志使用建议定义使用
错误日志发生故障的时候可以查看4xx,5xx通过错误级别指定error_log
访问日志记录着用户什么时候访问网站哪些页面,客户端信息.通过log_format定义访问 日志的格式access_log

1.3.1. 错误日志

指定错误日志的位置和错误级别(日志级别).

error_log指令
格式error_log 文件名 错误日志级别
指令放在哪main , http , mail , stream , server , location
错误日志级别;:左到右,越来越粗糙. 记录信息的详细程度.
debug, info, notice, warn, error, crit, alert, or emerg.

error是默认的.
notice 推荐.
debug: 未来用于调试使用,短时间开启,网站访问量较大别开.

nginx指令的帮助:nginx documentation

1.3.2. 访问日志

辅助我们进行分析,网站访问量,ip,pv.

访问日志是记录下用户信息的宝藏.

ip信息,请求方法,访问uri,文件大小,ua头,特别信息.

log_format指定访问日志的格式

log_format 格式名字 格式.....;放在哪里: http

Ngx访问日志格式(ngx 内置变量)说明
$remote_addr客户端ip地址
$remote_user用户名(空,ngx进行认证用户)
$time_local时间 30/Aug/2022:14:44:27 +0800
$request请求报文的起始行(请求方法 URI HTTP/1.1)
$request_method请求方法 GET或POST或HEAD
$uri请求中的uri部分内容
$statushttp状态码
$body_bytes_sent响应给客户的文件的大小,响应报文的主体大小(文件大小) 单位字节 bytedance
$http_referer(用户从哪里来的)从哪里跳转,访问到这个网站的. 网站运营分析
$http_user_agentUA 客户端代理(浏览器)
$http_x_forwarded_forXFF头,使用负载,记录用户真实的ip地址.

更多ngx内置变量:Alphabetical index of variables

access_log指定日志,使用对应格式:

access_log指定访问日志
放在哪http , server , location , if in location , limit_except

1.4. 案例06:搭建bird小鸟飞飞网站,给网站加速,设置缓存,网站中html,js,css结尾的文件缓存1天,图片缓存30天.

这里的缓存是浏览器缓存,使用 expires 指令实现

[root@web01 ~]# cat /etc/nginx/conf.d/bird.weiwei.cn.conf 
server {
  listen 80;
  server_name bird.weiwei.cn web.bird.weiwei.cn;
  error_log  /var/log/nginx/bird.weiwei.cn-error.log notice;
  access_log  /var/log/nginx/bird.weiwei.cn-access.log main gzip buffer=64k flush=10s;
  root /app/code/bird;
  location / {
    index index.html;
  }
  location ~* \.(html|css|js)$ {
    expires 30d;
  }
  location ~* \.(png|jpeg|gif|jpg|bmp)$ {
    expires 1h;
  }
}

访问日志其他选项access_log(了解,未来根据需要进行配置):

access_log说明
access_log off;关闭访问日志一般要配合if或location实现精确匹配与处理. access_log off ; access_log /dev/null;
访问日志进行压缩gzip需要通过zcat/zless/zgrep查看
进行缓存buffer = 32k 先把日志写入到内存中,定期写入到磁盘
定义刷新时间flush=10s

2. Location规则(路由规则)

案例05: 搭建大型直播购物网站

域名:buy.oldboylinux.cn

站点目录:/app/code/buy/

用户首页文件:/app/code/buy/index.html

后台管理页面:/app/code/buy/admin/index.html

要求后台只能内网访问:172.16.1.0/24网段.

案例06:搭建bird小鸟飞飞网站,给网站加速,设置缓存,网站中html,js,css结尾的文件缓存1天,图片缓存1小时. 浏览器缓存.

案例07:部署china站点

2.1. location概述

ngx的location规则:

  • 在ngx用于匹配用户请求中的uri. ngx对用户请求中的uri进行判断.
  • 如果用户请求的uri是xxxx,则做xxxx.

2.2. URI vs URL

URL网址 https://nginx.org/en/docs/

URI: /en/docs/

http://www.baidu.com/lidao/lidao.avi

URI: /lidao/lidao.avi 域名后面的内容

URL: http://www.baidu.com/lidao/lidao.avi 网址

http://www.baidu.com

URI: / 域名后面的内容

URL: http://www.baidu.com 网址

2.3. location 规则

location规则说明
location / {xxxx}
location规则说明
location /{xxxx}默认规则,保底,location规则在进行匹配的时候,其他的规则都匹配失败了,这时候匹配默认的规则.
location /image/{}用于匹配请求的uri(路径)bird.oldboylinux.cn/image/lidao.txt ✅
location ~ \.(jpg|jpeg)$ {}支持正则,区分大小写 bird.oldboylinux.cn/lidao/lidao.jpg
location ~* \.(jpg|jpeg)$ {}支持正则,不区分大小写 bird.oldboylinux.cn/lidao/lidao.jpg
location ^~ /lidao/不支持正则,仅仅匹配普通字符,很少使用,优先.
location = /50x.html请求的uri与书写的内容一模一样,不支持正则,精确匹配,使用较少.
location @名字命名的location一般用于return/error_log 内部跳转.

perl正则新的写法 :

\d === [0-9]

\w === [a-zA-Z0-9_]

location =
    #用于指定 状态码与对应的页面
    只要遇到500 502 503 504的状态码 就访问/50x.html页面
      error_page 500 502 503 504 /50x.html;
    #用于指定403.html的位置.
    error_page 403 /403.html;
    location = /403.html {
      root /usr/share/nginx/html;
    }
      #用于指定403.html的位置.
      error_page 404 /404.html;
    location = /404.html {
      root /usr/share/nginx/html;
    }
    error_page 500 502 503 504 /50x.html;
    #用于指定50x.html的位置.
    location = /50x.html {
      root /usr/share/nginx/html;
    }

2.4. location匹配的时候优先级(演示)

优先级location符号
1=
2^~
3~ ~*
4/image/
5/
[root@web01 ~]# cat /etc/nginx/conf.d/test.weiwei.cn.conf 
server {
  listen 80;
  server_name test.weiwei.cn;
  default_type text/html;
  location = / {
    return 200 " [ configuration A ]";
  }
  location / {
    return 200 " [ configuration B ]";
  }
  location /documents/ {
    return 200 " [ configuration C ]";
  }
  location ^~ /images/ {
    return 200 " [ configuration D ]";
  }
  location ~* \.(gif|jpg|jpeg)$ {
    return 200 " [ configuration E ]";
  }
}
测试与访问                     匹配结果
“/”                              A
“/index.html”                    B
“/documents/document.html”       C
“/images/1.gif”                  D
“/documents/1.jpg”               E

2.5. location案例05: 搭建大型直播购物网站

配置文件:

[root@web01 ~]# cat /etc/nginx/conf.d/buy.weiwei.cn.conf 
server {
  listen 80;
  server_name buy.weiwei.cn;
  error_log /var/log/nginx/buy.weiwei.cn-error.log notice;
  access_log  /var/log/nginx/buy.weiwei.cn-access.log main;
  root /app/code/buy;
  location / {
    index index.html;
  }

  location /admin {
    allow 172.16.1.0/24;
    deny all;
  }
}
#环境准备
mkdir -p /app/code/buy/admin/
echo "buy.oldboylinux.cn site" >/app/code/buy/index.html
echo "admin dangerous buy.oldboylinux.cn" >/app/code/buy/admin/index.html
#测试结果
curl -H Host:buy.oldboylinux.cn http://10.0.0.7/admin/
curl -H Host:buy.oldboylinux.cn http://172.16.1.7/admin/

2.6. 案例07 部署china代码

项目需求:

  1. 代码:china.tar.gz
  2. 站点目录:/app/code/china/
  3. 域名:china.oldboylinux.cn
  4. 如果访问.js文件,设置1天缓存,站点目录设置为/app/code/china/js
  5. 如果访问.css文件,设置1天缓存,站点目录设置为/app/code/china/css
[root@web01 ~]# cat /etc/nginx/conf.d/china.weiwei.cn.conf 
server {
  listen 80;
  server_name china.weiwei.cn;
  error_log /var/log/nginx/china.weiwei.cn-error.log notice;
  access_log /var/log/nginx/china.weiwei.cn-access.log main;
  root /app/code/china;
  location / {
    index index.html;
  }
  location ~* .js$ {
    expires 1d;
    root /app/code/china/js;
  }
  location ~* .css$ {
    expires 10d;
    root /app/code/china/css;
  }
}

nginx -t
systemctl reload nginx

tar xf china.tar.gz -C /app/code/

hosts文件中写入:
10.0.0.7  china.weiwei.cn

show databases;


select user,host  from mysql:

#创建用户
grant all on wordpress.* to 'wordpress'@'localhost' identified by 'lidao';
点赞
  1. 蹦跶的五花肉说道:
    Google Chrome Windows 10
    努力是一种生活态度
    1. admin说道:
      Google Chrome Windows 10
      我爱你

发表回复

电子邮件地址不会被公开。必填项已用 * 标注