http server location扩展了解项html
http{}层下容许有多个Server{}层,一个Server{}层下又容许有多个Locationnginx
http{}标签主要用来解决用户的请求与响应。web
server{} 标签主要用来响应具体的某一个网站。json
location{}标签主要用于匹配网站具体URL路径vim
1.编写nginx虚拟主机配置文件windows
# 建立虚拟主机配置文件,根据主配置文件中include{}模块指定的虚拟主机配置文件路径建立 [root@web02 ~]$ vim /etc/nginx/conf.d/game.wj.com.conf server{ # 监听80端口 listen 80; # 指定访问的域名 server_name game.wj.com; # 配置URL location / { # 站点目录 root /code/h5_games; # 指定主页面 index index.html; } }
2.建立出对应的站点目录浏览器
[root@web02 ~]$ mkdir /code
3.修改站点目录权限ruby
[root@web02 ~]# chown nginx.nginx /code
4.部署代码bash
# 下载代码至当前目录 wget http://test.driverzeng.com/Nginx_Code/h5_games.zip # 移动代码文件至/code mv h5_games.zip /code/
5.解压代码服务器
unzip h5_games.zip [root@web02 /code]$ ll total 18856 drwxr-xr-x 6 root root 108 May 3 2019 h5_games -rw-r--r-- 1 root root 19304923 May 3 2019 h5_games.zip
6.从新加载nginx的配置文件
[root@web02 /code]$ systemctl reload nginx
**7.本地域名解析 **
windows打开:C:\Windows\System32\drivers\etc\hosts文件 写入:10.0.0.8 game.drz.com
8.打开浏览器:http://game.drz.com
1.nginx主配置文件的内容是从上到下进行读取的,企业中通常都用域名访问,以免端口冲突
2.nginx配置文件的读取顺序是:主配置文件--->虚拟主机配置文件
在/etc/nginx/conf.d/下的虚拟主机配置文件,会按从上至下的顺序进行读取
3.nginx配置文件编写时必须以分号(;)表示一行的结尾
1.基于IP方式
利用多块网卡(多个IP)避免端口冲突
2.基于端口方式
没有域名时,主站点配置文件默认80,那么其余虚拟主机配置文件的监听端口号就得更改,影响用户体验
3.基于域名方式
多个域名不会存在端口冲突
# 虚拟机主配置文件中的日志格式设置 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; 定义了咱们日志信息的格式 # main:日志的格式名称
$remote_addr # 远端的IP地址,上一层地址(颇有多是代理IP) $remote_user # 记录客户端用户名 $time_local # 记录通用的本地时间 $time_iso8601 # 记录ISO8601标准格式下的本地时间 $request # 记录请求的方法以及请求的http协议 $status # 记录请求状态码(用于定位错误信息) $body_bytes_sent # 请求主体字节数,不包括响应头的大小 $bytes_sent # 发送给客户端的总字节数 $msec # 日志写入时间。单位为秒,精度是毫秒。 $http_referer # 记录从哪一个页面连接访问过来的 $http_user_agent # 记录客户端(浏览器)相关信息 $http_x_forwarded_for #记录客户端IP地址 $request_length # 请求的长度(包括请求行, 请求头和请求正文)。 $request_time # 请求花费的时间,单位为秒,精度毫秒 $http_x_forwarded_for #代理服务器将用户IP和代理IP一并传递(一个用户IP+代理IP) # 注:若是Nginx位于负载均衡器,nginx反向代理以后, web服务器没法直接获取到客户端真实的IP地址。 # $remote_addr获取的是反向代理的IP地址。 反向代理服务器在转发请求的http头信息中, # 增长X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址
tail -f /var/log/nginx/access.log 10.0.0.1 - - [17/Jul/2021:15:41:26 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://10.0.0.8/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36" "-"
# 定义日志格式 log_format 日志格式名称 # 调用日志格式到哪一个路径 access_log 日志文件打印存放路径 调用的日志格式 # 不打印日志,没有指定关闭日志打印时会打印至默认的日志路径,再把主配置文件的日志打印关闭就不会再打印日志 log_format off; 配置的日志格式能够都放在主配置文件中,可是调用日志格式时,最好写在相应的虚拟主机配置文件中
写日志的打印路径时,若是写相对路径,就是在/var/log/nginx这个路径中
使用logrotate切割日志
logrotate是一个系统自带的日志切割服务,可是须要yum安装的才自带,源码安装须要本身配置日志切割文件
# 查看被切割的日志类型 [root@web02 ~]$ ll /etc/logrotate.d total 24 -rw-r--r--. 1 root root 91 Apr 11 2018 bootlog -rw-r--r-- 1 root root 194 Nov 16 2020 httpd -rw-r--r-- 1 root root 351 May 25 21:30 nginx -rw-r--r--. 1 root root 224 Oct 30 2018 syslog -rw-r--r--. 1 root root 100 Oct 31 2018 wpa_supplicant -rw-r--r--. 1 root root 103 Nov 5 2018 yum
[root@web02 ~]$ vim /etc/logrotate.d/nginx # 须要切割的日志(这里是全部以.log结尾的日志文件) /var/log/nginx/*.log { # 天天切割 daily # 忽略丢失日志 missingok # 日志保留52天 rotate 52 # 日志文件进行压缩 compress # 延迟压缩 delaycompress # 注意空日志,出现空日志就不切割 notifempty # 日志文件的权限 属主 属组 create 640 nginx adm # 共享的脚本 sharedscripts postrotate if [ -f /var/run/nginx.pid ]; then # 从新加载nginx配置文件: kill -10 nginx服务的pid号 kill -USR1 `cat /var/run/nginx.pid` fi endscript}
true命令:只是一个执行命令动做,不会有任何输出
date -s命令:修改系统时间,date -s '指定的时间'
须要在没有安装nginx时进行操做
1.获取fpm工具
[root@web01 ~]$ wget http://test.driverzeng.com/other/fpm-1.3.3.x86_64.tar.gz
2.安装Ruby语言环境
[root@web01 ~]$ yum -y install ruby rubygems ruby-devel
3.解压fpm工具
[root@web01 ~]$ tar xf fpm-1.3.3.x86_64.tar.gz [root@web01 ~]$ ll total 2576 -rw-r--r-- 1 root root 15360 Jun 27 2016 arr-pm-0.0.10.gem -rw-r--r-- 1 root root 88064 Jun 27 2016 backports-3.6.8.gem -rw-r--r-- 1 root root 21504 Jun 27 2016 cabin-0.8.1.gem -rw-r--r-- 1 root root 29184 Jun 27 2016 childprocess-0.5.9.gem -rw-r--r-- 1 root root 24576 Jun 27 2016 clamp-0.6.5.gem -rw-r--r-- 1 root root 881664 Jun 27 2016 ffi-1.9.10.gem -rw-r--r-- 1 root root 114176 Jun 27 2016 fpm-1.3.3.gem -rw-r--r-- 1 root root 1288103 Jul 14 2016 fpm-1.3.3.x86_64.tar.gz -rw-r--r-- 1 root root 152064 Jun 27 2016 json-1.8.2.gem
4.查看gem源
[root@web01 ~]$ gem source list *** CURRENT SOURCES *** # 国外网站,国外的源 https://rubygems.org/
5.追加阿里云的gem源
[root@web01 ~]$ gem sources -a http://mirrors.aliyun.com/rubygems/
6.删除国外源
[root@web01 ~]$ gem sources --remove https://rubygems.org/
7.安装fpm工具
[root@web01 ~]$ gem install *.gem PS:一次不行就再安装一次 # 删除fpm全部的gem包 [root@web01 ~]$ rm -rf ./*
8.存储nginx的依赖包
# 指定下载存放至/tmp下 [root@web01 ~]$ yum install -y openssl-devel pcre-devel zlib-devel --downloadonly --downloaddir=/tmp
9.将下载到/tmp目录下的依赖包一并压缩打包
[root@web01 /tmp]$ cd /tmp/ [root@web01 /tmp]$ tar zcf nginx_rpm.tar.gz *.rpm
10.源码安装nginx
11.编写一个打包的脚本文件
vim rpm_nginx.sh #!/bin/bash groupadd www -g 666 useradd www -u 666 -g 666 -s /sbin/nologin -M echo ' [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 ExecStart=/app/nginx/sbin/nginx ExecReload=/app/nginx/sbin/nginx -s reload ExecStop=/app/nginx/sbin/nginx -s stop [Install] WantedBy=multi-user.target' > /usr/lib/systemd/system/nginx.service ln -s /app/nginx-1.20.1 /app/nginx
12.执行打包命令进行打包
[root@web01 ~]$ fpm -s dir -t rpm -n nginx -v 1.20.1 -d 'pcre-devel,openssl-devel,zlib-devel' --post-install /root/rpm_nginx.sh -f /app/nginx-1.20.1 -s:指定打包的是目录仍是文件 -t:打成什么类型的包,这里是rpm包 -n:指定打包后的名称 -v:打包的版本 -d:指定依赖包有哪些 --post-install:在安装以前须要执行的脚本
可能须要的操做:
安装rpmbuild命令
yum install -y rpmbuild-devel
打包完成后安装nginx时,直接yum安装打好的nginx的rpm包就能够