day12.2

day12.2

web基础入门

nginx概述

# nginx是一个开源且高性能、可靠的http、web服务、代理服务
开源 直接获取源代码
高性能 支持海量开发
可靠 服务稳定

nginx应用场景

nginx安装

# rpm安装(yum安装)
	1.epel仓库(阿里云)
	2.官方仓库

# 源码安装

使用官方源

nginx官方网站:TP



# 1.添加nginx官方源
[root@web02 ~]# vim /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

# 2.安装nginx
[root@web02 ~]# yum install -y nginx

# 3.启动nginx并加入开机自启
[root@web02 ~]# systemctl start nginx
[root@web02 ~]# systemctl enable nginx

# 4.查看nginx的版本
[root@web02 ~]# nginx -v
nginx version: nginx/1.22.0

# 5.查看nginx的版本和源码安装生成步骤参数有哪些
[root@web02 ~]# nginx -V

nginx的暂停

# 选项
-c:指定配置文件路径
-t:检查配置文件的语法
-s:启停重载,服务操作
-v:查看版本号
-V:查看版本和编译参数
# 1.启动
systemctl start nginx
nginx
绝对路径

# 2.暂停
systemctl stop nginx
nginx -s stop
绝对路径 -s stop

# 3.重启加载
systemctl reload nginx
nginx -s reload
绝对路径 -s reload

源码安装启动脚本

## 源码安装,使用fpm打包,脚本内容:
# 先写脚本
[root@web01 ~]# vim post_install_nginx.sh
ln -s /application/nginx-1.20.2 /opt/nginx
echo 'PATH="/usr/local/nginx/sbin:$PATH"' > /etc/profile.d/nginx.sh
cat >> /usr/lib/systemd/system/nginx.service <<EOF
[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=/application/nginx/nginx.pid
ExecStart=/application/nginx/sbin/nginx -c /application/nginx/conf/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /application/nginx/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /application/nginx/nginx.pid)"
[Install]
WantedBy=multi-user.target
EOF

nginx配置文件

# 1.nginx主配置文件
路径 类型 作用
/etc/nginx/nginx.conf 配置文件 nginx主配置文件
/etc/nginx/conf.d/default.conf 配置文件 nginx网站示例配置文件
# 2.nginx代理相关参数文件
路径 类型 作用
/etc/nginx/fastcgi_params 配置文件 Fastcgit代理配置文件
/etc/nginx/scgi_params 配置文件 scgi代理配置文件
/etc/nginx/uwsgi_params 配置文件 uwsgi代理配置文件
# 3.nginx编码相关配置文件
路径 类型 作用
/etc/nginx/win-utf 配置文件 Nginx编码转换映射文件
/etc/nginx/koi-utf 配置文件 Nginx编码转换映射文件
/etc/nginx/koi-win 配置文件 Nginx编码转换映射文件
/etc/nginx/mime.types 配置文件 Content-Type与扩展名
# 4.nginx管理相关命令
路径 类型 作用
/usr/sbin/nginx 命令 nginx命令行管理终端工具
/usr/sbin/nginx-debug 命令 nginx命令行与终端调试工具
# 5.nginx日志相关目录与文件
路径 类型 作用
/var/log/nginx/ 目录 nginx默认存放日志的目录
/etc/logrotate.d/nginx 配置文件 nginx默认日志切割

nginx配置文件解析

# 过滤出有效的配置文件信息
[root@web02 ~]# grep -Ev '^$|#' /etc/nginx/nginx.conf 

'核心层、核心模块、全局配置文件'
# nginx启动用户配置
user  nginx;

# nginx工作线程数量(cpu亲和)
worker_processes  auto;(auto 自动根据CPU的核心数来启动对应的工作进程数)

# 错误日志  日志路径                  日志级别
error_log  /var/log/nginx/error.log notice;

# 程序启动进程号的(pid号)的存放路径
pid        /var/run/nginx.pid;

'事件层(事件模块)'
events {
	# 一个worker进程的最大连接数
    worker_connections  1024;
}

'http层、http模块、网站配置'
http {
	# 浏览器中,默认可以解析的格式(不需要下载的格式)
    include       /etc/nginx/mime.types;
    
    # 浏览器中,以下格式,点击后直接下载不解析(安装软件的格式)
    default_type  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  /var/log/nginx/access.log  main;
    
    # 文件传输的优化配置
    sendfile        on;
    #tcp_nopush on;

    # 长链接,超时时间  65s
    keepalive_timeout  65;
    
    # 数据传输过程中,使用gzip压缩
    #gzip on;

    # 包含 nginx其他子配置文件(网络虚拟主机配置文件server)
    include /etc/nginx/conf.d/*.conf;
}

"注意:写虚拟主机配置文件,结尾一定要以.conf结尾"

日志格式

# 远端的IP(上一个节点的IP)
$remote_addr
# 登录的用户
$remote_user
# 时间
[$time_local] 
# 请求方式、请求URI、HTTP协议版本号
$request
# 状态码
$status 
# 流量
$body_bytes_sent 
# 跳转地址(从哪个网站跳转过来的)
$http_referer
# 客户端信息
$http_user_agent
# 记录透传的IP地址(获取用户的真实IP)
$http_x_forwarded_for

虚拟主机文件配置

# 虚拟主机文件配置
server{
# 该网站的监听端口
	listen 80;
# uri跳转
location / {
# 站点目录
	root /wc;
# 默认首页,索引页面
	index index.html;
  }
}

多虚拟主机(多web网站配置)

# 在企业中,是不可能用一个nginx对应一套业务,多个网站都在一个nginx配置

基于IP的多虚拟主机

[root@web01 conf.d]# ifconfig eth0:0 10.0.0.10
[root@web01 conf.d]# ifconfig eth0:1 10.0.0.11
[root@web01 conf.d]# cat 1_game.conf
server{
listen 80;
server_name 10.0.0.10;
location /{
root /game/h5_games;
index index.html;
}
}
[root@web01 conf.d]# cat 1_zls.conf
server{
listen 80;
server_name 10.0.0.7;
root /code;
location /{
index index.html;
}
location /zls{
index index_1.html huanglong.html;
}
}
[root@web01 conf.d]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.7 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::a319:8c13:9238:5bb6 prefixlen 64 scopeid 0x20<link>
inet6 fe80::3077:9382:f10c:ae23 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:9a:b0:68 txqueuelen 1000 (Ethernet)
RX packets 80416 bytes 76841088 (73.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 47140 bytes 15283547 (14.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.10 netmask 255.0.0.0 broadcast 10.255.255.255
ether 00:0c:29:9a:b0:68 txqueuelen 1000 (Ethernet)

基于多端口的虚拟主机

# 1.进入网站配置文件目录中
[root@web02 conf.d]# cd /etc/nginx/conf.d/

# 2.创建网站文件并以.conf结尾
[root@web02 conf.d]# vim qw.conf 
server{
listen 8082;
server_name 10.0.0.8;
root /opt/wc;
index index.html
}

# 3.检查语法是否错误
[root@web02 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# 4.在opt下创建wc目录
[root@web02 ~]# mkdir /opt/wc
[root@web02 ~]# cd /opt/wc/

# 5.部署文件
[root@web02 wc]# vim index.html
ewewqe

# 6.重启配置文件
[root@web02 wc]# systemctl reload nginx

基于多域名的虚拟主机

# 1.进入网站配置文件目录中
[root@web02 conf.d]# cd /etc/nginx/conf.d/

# 2.创建网站文件并以.conf结尾
[root@web01 ~]# vim /etc/nginx/conf.d/www.wc1.com.conf

server{
listen 80;
server_name www.wc1.com;
root /opt/wc1;
index index.html;
}

# 3.检查语法 
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# 4.在/opt下创建wc1目录
[root@web01 ~]# mkdir /opt/wc1
[root@web01 ~]# cd /opt/wc1/

# 5.部署文件
[root@web01 wc1]# vim index.html
opopopooop

# 6.重启配置文件
[root@web01 wc]# systemctl reload nginx

# 7.在windows系统中,配置本地DNS(在没有域名的情况下)
1.按win+r打开运行

2.输入:drivers

3.进入etc目录

4.使用notepad++打开hosts文件

5.添加域名解析

匹配符 匹配规则 优先级
- 精确匹配 1
^~ 以某个字符开头 2
~ 区分大小写的正则匹配 3
~* 不区分大小写的匹配 4
!~ 区分大小写的不匹配的正则 5
!~* 不区分大小写不匹配的正则 6
/ 通用匹配,任何匹配都会匹配 7

应用场景

# 通用匹配,任何请求都会匹配到
location / {
...
}
# 严格区分大小写,匹配以.php结尾的都走这个location
location ~ \.php$ {
...
}
# 严格区分大小写,匹配以.jsp结尾的都走这个location
location ~ \.jsp$ {
...
}
# 不区分大小写匹配,只要用户访问.jpg,gif,png,js,css 都走这条location
location ~* .*\.(jpg|gif|png|js|css)$ {
...
}
location ~* \.(jpg|gif|png|js|css)$ {
...

}
# 不区分大小写匹配
location ~* "\.(sql|bak|tgz|tar.gz|.git)$" 
posted @ 2022-05-31 15:09  Gabydawei  阅读(32)  评论(0编辑  收藏  举报