Nginx安装配置

Nginx安装配置

nginx安装配置笔记

1.操作系统 centos7
2.下载安装方式
rpm包
yum工具自动化安装
获取源代码,手动编译安装nginx(指定安装路径,额外开启nginx第三方功能)

3.选择nginx编译安装,那么解决gcc,make编译工具
使用yum配置前必须确定配置好了yum源
-- cd /etc/yum.repos.d/
步骤1确保有wget命令
yum install waget -y
步骤2先备份旧的yum源
mkdir /etc/yum.repos.d/repobak
mv /etc/yum.repos.d/* /etc/yum.repos.d/repobak
#如上的操作,就是使得在yum仓库的一层目录,没有任何repo文件,因此就实现了linux就没有yum源了,此时没有yum源,需要在配置一个新的repo仓库
可以访问阿里云的镜像https://developer.aliyun.com/mirror/
#清空旧的yum缓存
yum clean all
#生成新的yum云的缓存,加速下次下载
yum mekecache

yum install -y gcc gcc-c++ autoconf automake make


#安装使用nginx还得安装一些第三方库,比如nginx的静态资源压缩功能需要的 gzi,lib ,nginx需要支持url重写需要的pcre库(perl开发的),以及nginx搭建加密站点https,所以需要的openssl依赖库等

yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel wget http-tools vim


#安装完毕nginx所需的基础依赖库,还得检查防火墙是否关闭,selinux是否关闭,yum配置,网络情况等等
 看防火墙是否关闭
 iptables -L
 selinux是否关闭
 gentenforce

编译安装ngnix

1.下载程序源代码 从nignx下载的是源代码
cd /opt
wget url
还可以淘宝nginx
2.解压缩
tar -zxvf 压缩包名
3.进入源代码目录下,准备开始编译安装
 查看有哪些目录
  
4.准备编译三部曲
第一:进入软件源代码目录,执行编译脚本文件,如指定安装路径
首先查看编译文件
执行编译脚本文件,释放makefile
./configure --prefix=url

第二: 直接开始下一步安装 make命令
第三: make install
5 查看可执行nignx目录 进入 再ls
6.若是直接执行ngnix命令默认是代表启动nginx进程 如果报错没有找到nginx命令
  6.1 编写一个nginx的专属环境变量,创建一个
      cat /etc/profile.d/nginx.sh
      
      编辑:export PATH="$PATH:/opt/可运行名/sbin/"
7.推出当前会话,重新登录,系统默认加载/etc/profile.d下的所有环境变量
8.此时可以开解的使用nginx各种命令可
nginx #首次直接输入nginx 表示启动该进程,如果你再次启动则报错,端口被占用
可以先停止 nginx -s stop
如果不想重启,直接重新加载配置文件,nginx提供了一个reload功能,可以在不重启该服务
nginx -s reload
9.检查nginx的配置星系
nginx -v

Nginx配置文件语法

  • 全局指令

  • 局部指令

  • hhtp{}语句块,核心功能

    • server{}语句块,注意大括号的闭合{}

    • location{},对应一个url

    • upstream{},定义上有服务器

注意要更改配置文件记得备份 cp 文件名 备份文件名

  • nginx.conf是由指令和指令块组成
  • 每行语句都由;结束
  • 指令和参数之间由空格分隔
  • 指令块可以由大括号组织多条语句
  • #表示注释符
  • nginx支持用$变量名,支持该语法
  • nginx支持include语句
  • nginx部分指令支持正则表达式。如重写指令

Nginx命令行

1.nginx启停命令 -s参数 指的是给nginx进程发送某种信号
nginx  #初次启动直接输入nginx,如启动后再执行该命令,就会提示端口冲突(解决方案1:停止nginx,在启动)
    nginx -s stop #停止nginx进程
    nginx -s reload #平滑启动,利用reload可以在不重启nginx进程的情况下,重新读取配置文件
    
2.查看nginx的帮助信息
nginx -h/-?
    

nginx信号传递

配置文件重读

1.检查当前的nginx进程
ps -ef|grep nginx
2.修改nginx.conf修改配置参数
3.重新加载nginx配置
nginx -s 

nginx-master信号传递

1.信号先发送给主进程,主进程不处理请求,而是分配发给worker进程,主进程负责重启,热加载,热部署等
2.master是根据nginx.conf中 worker——process定义启动创建的工作进程数
3.当worker运行后,master就处于一个等待的状态,等待用户的请求来临或者系统信号
4.系统管理员可以发送kill指令,或者nginx -s信号,这样的形式操控nginx

nginx信号集

nginx -s 对应的信号功能如下
参数     信号       含义
stop     TERM    强制关闭nginx服务
null    INT     强制关闭整个nginx
quit     OUt    优雅的关闭整个(会等待任务结束后)
reopen  USER1   重新打开日志记录
reload   HUB    重新读取文件,并且优雅的退出旧的worker

Nginx热部署功能

nginx作为一个优秀的web服务器,优秀的反向代理服务器,并且nginx也支持高可用的特性,nginx还支持热部署的特点

热部署的特点:在不重启或者关闭进程的情况下,新的应用直接替换旧的应用

更换nginx的二进制命令版本
热部署大致流程
1.备份旧的二进制文件 备份nginx命令,/opt/tng232/sbin/nginx
2.编译安装新的二进制文件,覆盖旧的二进制文件,(再装一个版本的nginx,且替换旧的nginx命令)
3.发送USR2信号给旧的master进程
4.发送WINC信号给旧的master进程
5.发送QUIT信号给旧的master进程

环境准备

1.准备旧的nginx版本
2.准备新的nginx版本

nginx工作模式master-worker

刚才所涉及的nginx支持reload重载,仅仅是nginx的master进程,不会更改已经建立的worker,只会等worker处理完毕之后,杀死旧的然后再从新的配置文件中,运行新的worker

nginx还提供了热部署功能,特点:在不影响用户体验下,进行软件版本升级

Nginx日志

日志切割

du -h .

线上常见操作,能够控制单个日志大小



给日志文件重命名 mv 旧名 新名



发送信号给nginx主进程,给他发送一个新的信号

nginx -s reopen  #这个命令等同于 kill -USR1 ‘cat nginx,pid’



注意在以上的nginx重命名日志切割链,不要着急立即对文件修改,而是要等待几秒钟,因为nginx的工作模式特点,master下发指令给worker干活



生产环境下,日志切割主要是定时任务来进行操作

编写一个定时日志切割脚本

vim cut_nginx_log.sh #写下内容











crontab -e #打开定时任务

0 0 * * *  /bin/bash  /myscript/cut_nginx_log.sh(脚本地址)

虚拟主机

虚拟主机指的就是一个独立的站点配置,是nginx默认支持的一个功能,他能有自己独立的域名,独立的ip,独立的端口配置,能够配置完整的www服务,例如网站搭建,ftp服务搭建,邮件服务带那里等等

并且nginx支持多虚拟主机,可以在一台机器上,同时运行多个网站的功能

nginx多虚拟主机,可以基于

  • 多域名形式
  • 多ip形式
  • 多端口形式

利用虚拟主机的功能,就不用为了运行一个网站,而单独配置一个nginx服务器,或者单独在运行一组nginx进程

利用nginx的多虚拟主机配置,我们就可以基于一台服务器,一个nginx进程,是心啊多个站点的配置

在nginx配置文件中可以配置多个server{}一个server可以理解为一个网站,默认是自上而下的匹配规则(如果没有定义其他规则,默认顶一个)

server中的

  • listen 定义虚拟主机中的端口号,也是用户访问网站的入口
  • servername 域名配置 有域名写域名 没有域名写localhost或者_
  • charset 给nginx定义网站编码
  • location nginx的路劲匹配规则

Nginx静态资源压缩

nginx支持gzip压缩功能

1.首先确保有nginx
2.准备静态数据
3.开启nginx的压缩功能,在http{}配置东打开如下参数
   gzip on;
   gzip_http_version 1.1;
   gzip_comp_level;
   gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript 
   application/x-http-php image/jpeg image/gif image/png;

Nginx基于IP的多虚拟主机

v server

环境的准备

1.准备好linux虚拟机,以及配置好三个IP地址
ipconfig ens33:1 192.168.178.145 netmask 255.255.255.0 broadcast 192.168.178.255 up
ipconfig ens33:2 192.168.178.146 netmask 255.255.255.0 broadcast 192.168.178.255 up

添加多个server{}标签,让nginx支持基于ip的多虚拟主机,返回多个站点内容

1.给nignx添加include包含语法,让其他目录下的配置文件参数,导入到nignx.conf中,这样的写法,能够让nginx每一个配置文件看起来更简洁,更清晰
  修改nignx.conf ,在http{}标签中的最后一行,添加如下参数(extra文件夹和nginxconf文件夹相对)
  include extra/*.conf;
 2.在extra目录下,添加多个基于ip的虚拟机主键配置
 可以像如下规划的形式,来编写nginx

Nginx基于多域名的虚拟主机配置

基于多ip的虚拟主机,用的还是不多,还可能造成IP不足的问题,一般如果没有特殊需求,用的更过的是基于多域名的虚拟主机

前提使用条件,要么配置dns服务器,将你想用的域名解析到对应的ip

使用本地的hosts文件,进行本地测试访问

多域名配置结合nignx,就是先了解多虚拟机的访问,解决了可能IP不足的问题

1.环境准备,先在客户端本地,修改hosts文件信息
macos /etc/hosts文件里面
windows c盘里面的hosts文件
2.修改host文件,添加如下信息,注意这里是客户端本地添加的域名
3.修改服务端的nginx命令
4.进行nginx重启
5、分别准备三个域名的虚拟主机站点资料
6.生成三个内容
7.通过客户端浏览器访问

基于多端口虚拟主机配置

修改nginx.conf中

server{}标签里面 定义端口

Nginx多虚拟主机日志定义

不同ip,不同端口,不同域名 都能访问到一台计算机内

针对每一个虚拟主机都配置好access.log

编辑对应的server{}

加上access_log log的路径

Nginx之Access日志功能

Nginx开启日志功能只需要在nginx.conf里面找到log_format参数,定义日志的格式,以及定义日志的存储位置以及日志的格式,路径,缓存大小

  • $remote_addr 记录访客的客户端ip地址

  • $remote_user 记录远程客户端的访客用户名

  • time_local 记录访问时间和地区信息

  • request 记录用户的http请求首行信息

  • $status 记录用户http请求的状态

  • $body_bytes_sent 记录服务器发给客户端的响应体数据字节大小

  • $http_referer 记录本次记录请求是从哪个链接过来的,可以根据refer信息来进行防盗链信息

  • $http_user_agent 记录客户端的访问信息,如浏览器信息,手机浏览器信息

  • “$http_x_forwarded_for” 捉到藏在代理服务器后面的真实客户端的ip信

Nginx目录浏览功能

将机器上的目录资料,提供一个展示功能

修改nginx.conf
在localtion中加
autoindex on;

Nginx状态信息功能

nginx提供了status模块,用于检测niginx的请求连接信息,这个功能需要在编译安装nginx的时候,添加–with-http-stud-status_module参数,才能使用

nginx -V 检查nginx

当支持status功能,我们可以添加一个conf配置文件,用于检查状态页的功能

创建一个status.cof放在extra目录下
1.确保你的nginx.conf主配置文件,支持include语法
include extra/*.conf支持include语法
2.创建status.conf
3.修改status 添加如下内容
server{
listen 85;
location /{
      stub_status on;
      access_log off;
}
}
4.检查nginx -t
nginx -s reload
1.安装ab命令
yum install httpd_tools -y
2.使用ab对nginx发送大量数据
-n 请求数量
-c 请求并发数
-k

Nginx错误日志

nginx想要使用error_log就得打开nginx.conf找到关键字参数error_log,他是放在http{}称为全局的变量参数,针对所有的server{}虚拟主机生效

也可以单独的写在虚拟主机中,单独记录某一个虚拟主机的错误日志

错误日志语法
error_log file level;

日志级别
debug info notice warn error crit alter emerg 级别越来越严重级别越低越详细
生产常用warn +后面三个

Nginx之location匹配机制

location相关语法

location [=|~|~*|^~] url{
    #做出相应的动作
}
#nginx有关location的匹配 符号如下
    =        精准匹配
   ^~        以某个字符开头
    ~*       支持正则匹配模式
    /blog/  访问的路径需要含blog
    /       通用匹配,不符合其他的location的匹配规则
    
    

Nginx的url地址重写功能

Nginx的url地址重写功能,主要是使用nginx提供的rewrite功能,且支持正则表达式

rewrite能够实现url的跳转,实现url规范化,根据请求的变量实现url实现跳转等等,基于url重写功能常见的效果如下

  • 对于爬虫程序的封禁,让其跳转到一个错误页面
  • 动态的url,伪装成静态的网页,便于搜索引擎的抓取
  • 新旧域名的更换,替换

rewrite语法

rewrite ^(.*) http://192.168.178.134/$1 permanent;

rewrite结尾语法

  • Last 规则匹配完成后,继续向下匹配的location
  • break 本条规则匹配后,立即停止匹配动作
  • Redirct 返回302临时重定向状态码,浏览器地址栏显示跳转后的url 爬虫不会更新url
  • permanent 返回301永久重定向,浏览器地址栏也显示跳转后的url 爬虫更新网站url

last和break用于实现url重写,浏览器地址栏不会发生变化

redirect和permanent也是用于url跳转,浏览器地址栏发生变化,跳转新的url地址栏

Ngnix认证模块

nginx提供了认证模块,语法是

location / {
    auth_basic 'string';
    auth_basic_user_file conf/htpasswd;
}
          ~~~

linux提供了密码生成命令
hroasswd时apache提供的密码生成工具,nginx也支持quth——basic模块,因此我们可以利用htpasswd命令账号密码,提供给nginx去使用

yum install httpd-tools -y

#语法
htpasswd -bc .access username password
#解释
-b 在命令行中输入 账号密码
-c 创建密码文件
username
password
默认 .access文件采用加密方式md5来验证

          ~~~

​ 实际操作案例

1.准备一个用于练习认证模块的配置文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值