Nginx目录分级及基本信息介绍

一、nginx背景介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

二、nginx常用功能

  • 代理
  • 负载均衡

三、使用虚拟机进行nginx的学习

1.配置

• 内存:建议8G以上

• 磁盘:建议使用SSD

• CPU:4核以上主流即可

2.特点

• 安装使用简单

• 使用于传统公司

• 适用于VPS

• 适用于高性能服务器部署

3.环境

准备:

• Vmware、Xshell 7、Xftp 7

• CentOS7.6镜像

安装与配置操作系统:

• 配置虚拟机上网

• 配置静态ip地址

4.排错

遇到问题的时候可以从以下几个方面着手,无非就是配置出错或者版本不匹配的问题。

• Vmware中网关是否正确

• 直接ping ip是否能通(物理连接排查)

• 使用和老师一样版本的软件

• 卸载重装最快

四、nginx版本介绍

• 常用版本分为四大阵营

• Nginx开源版http://nginx.org/

​ 免费开源,但是功能只有一些核心功能,需要某些功能的话需要自己在第三方库下载。

• Nginx plus 商业版https://www.nginx.com

​ 收费但是功能齐全,服务优良(公司可以权衡成本与收益后看用开源版还是商业版)

• Openrestyhttp://openresty.org

​ 基于lua脚本的一款。

• Tenginehttp://tengine.taobao.org/

​ 淘宝开源出来的。

五、开源版安装

1.下载

直接去上面四个链接下载自己想要的版本

在这里插入图片描述

然后使用xtf或者其他工具将其上传到虚拟机内(这里推荐给他在创建一个文件夹)

执行以下命令的前提是nginx压缩包在下列nginx文件夹内

mkdir /usr/local/nginx
cd /user/local/nginx

2.解压编译安装与依赖检查

①解压
tar -zxvf nginx-1.23.2.tar.gz 
②依赖检查
./configure --prefix=/usr/local/nginx
③常见的几种错误及解决方案
缺少c语言环境

编译安装nginx需要使用

yum install -y gcc
缺少PCRE

在这里插入图片描述

nginx的http模块使用pcre来解析正则表达式,需要在linux上安装pcre库

yum -y install pcre-devel
缺少zlib library

在这里插入图片描述

安装zlib库,nginx使用zlib对http包的内容进行gzip

yum install -y zlib zlib-devel
缺少openssl

装openssl库,让 nginx 支持 https(即在ssl协议上传输http)

yum install ‐y openssl openssl‐devel

依赖检查成功的结果。
在这里插入图片描述

④编译安装

请添加图片描述

make
make install
⑤Nginx启停
cd /usr/local/nginx/sbin
./nginx

在外部访问

请添加图片描述

其他一些命令

./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置
⑥防火墙设置
  • 关闭防火墙 systemctl stop firewalld.service

  • 禁止防火墙开机启动 systemctl disable firewalld.service

  • 放行端口 firewall-cmd --zone=public --add-port=80/tcp --permanent

  • 重启防火墙 firewall-cmd --reload

⑦安装成系统服务

这里注意保持路径的一直性

  • 创建服务脚本
vim /usr/lib/systemd/system/nginx.service
  • 服务脚本内容
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target

重新加载系统服务

systemctl daemon-reload

启动服务

systemctl start nginx.service

开机启动

systemctl enable nginx.service

六、目录结构及基本运行原理

请添加图片描述

• 目录

[root@MyLinux nginx]# tree
.
├── client_body_temp
├── conf //用来存放配置文件
│  ├── fastcgi.conf
│  ├── fastcgi.conf.default
│  ├── fastcgi_params
│  ├── fastcgi_params.default
│  ├── koi-utf
│  ├── koi-win
│  ├── mime.types//规定了返回的文件后缀名对应的响应类型(直接展示还是直接下载?)
│  ├── mime.types.default
│  ├── nginx.conf//核心配置文件(可以用来管理其余的配置文件)
│  ├── nginx.conf.default
│  ├── scgi_params
│  ├── scgi_params.default
│  ├── uwsgi_params
│  ├── uwsgi_params.default
│  └── win-utf
├── fastcgi_temp
├── html //用来存放页面(默认是这里可以进行修改)
│  ├── 50x.html//服务器错误页面
│  └── index.html//主页html
├── logs//日志文件存放的地方
│  ├── access.log//普通进程日志文件
│  └── error.log//错误日志文件
├── sbin//存放nginx的主程序

请添加图片描述

• 更改默认页

• 基本运行原理

七、nginx基础配置

1.最小配置文件
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
2.核心配置

worker_processes

worker_processes 1; 默认为1,表示开启一个业务进程

worker_connections

worker_connections 1024; 单个业务进程可接受连接数

include mime.types;

include mime.types; 引入http mime类型

default_type application/octet-stream;

default_type application/octet-stream; 如果mime类型没匹配上,默认使用二进制流的方式传输。

sendfifile on;

sendfile on; 使用linux的 sendfile(socket, file, len) 高效网络传输,也就是数据0拷贝。

nginx应用接收到网络上的请求之后,直接将信号发送给网络接口缓存(直接从网络已接口读数据响应出去)

3.虚拟主机配置
虚拟主机长什么样子

以下就是两个主机,一个是aa.aiecp.com,另一个是hh.aiecp.com。使用这两个域名可以将用户的请求分发到不同的路径之下。

server {
    listen 80; 监听端口号
    server_name aa.aiecp.com; 主机名
    location / { 匹配路径(这里是相对于nginx安装目录来说的)
    	root html; 文件根目录
    	index index.html index.htm; 默认页名称
    }
    #发生错误直接定位到50.html页面(找不到就去html文件夹下找)
    error_page 500 502 503 504 /50x.html; 报错编码对应页面
    location = /50x.html {
    	root html;
    }
}
server {
    listen 80; 监听端口号
    server_name hh.aiecp.com; 主机名
    location / { 匹配路径(这里是相对于nginx安装目录来说的)
    	root html; 文件根目录
    	index index.html index.htm; 默认页名称
    }
    #发生错误直接定位到50.html页面(找不到就去html文件夹下找)
    error_page 500 502 503 504 /50x.html; 报错编码对应页面
    location = /50x.html {
    	root html;
    }
}
主机名匹配规则
  • 完全匹配
    • 我们可以在同一servername中匹配多个域名
    • 例:server_name vod.mmban.com www1.mmban.com;
  • 通配符匹配
    • 可以在该域名下分配二级域名
    • server_name *.mmban.com
  • 通配符结束匹配
    • 将所有后缀域名全匹配到这
    • server_name vod.*;
  • 正则匹配
    • 域名中包含特定字符的都匹配进来
    • server_name ~^[0-9]+.mmban.com$;
  • 小技巧
    • 使用*通配符可以将所有该域名下的子域名匹配进来
    • 可以使用主机匹配规则映射用户二级域名、短网址
    • 匹配的时候优先精准匹配,然后使用正则表达式或者通配符匹配

后续:虚拟主机的配置


在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷尔。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值