nginx网站服务

nginx网站服务:

nginx是一款高性能而且轻量级的web服务软件

提供静态页面服务。就是一个纯文本格式的文件,一般都是以.html或.htm格式为结尾的文件

特点:

稳定性一般(nginx的bug很多,更新迭代很快)

httpd 俗称阿帕奇 在国内用的比较少,国外主要是用阿帕奇

nginx是开源的(免费)

阿里就是基于nginx做的二次开发:tengine

对于系统的资源消耗非常低,它也是http协议(单台物理服务器可以支持并发量3w-5w台,在工作中一般设为2w个左右,保存服务器稳定),因此相对于阿帕奇更好

nginx的主要功能:

1.处理静态页面,可以直接提供静态页面的文件服务。html、图片、动画也可以,能够高效的处理并且响应静态页面的请求。(静态页面)

2.反向代理,可以通过反向代理实现负载均衡和高可用

3.处理动态请求,nginx一般是把动态请求转发到后端服务器,由专门处理动态请求的服务器进行处理。然后动态请求处理完之后,还是nginx来响应给客户端

4.支持加密的http协议,也就是https

5.支持虚拟主机

6.支持URL的重定向功能,也就是页面跳转

7.nginx自带缓存机制,可以缓存静态页面的内容,减轻后端服务器的压力

8.nginx自带日志记录,访问日志(哪些主机访问了本机的nginx服务),报错日志(1.访问失败的记录,2.配置文件错误3.nginx启动失败的记录)

9.可以支持模块扩展。可以加载不同的模块和自定义配置

10.低内存消耗:例如1w个keep-alive连接保持,只占3M不到的内存

11.支持热部署,也就是可以不停机更新配置文件与升级版本

nginx的工作中应用场景:

1.静态页面服务

2.转发动态请求

3.反向代理负载均衡

4.缓存服务

5.连接保持和会话保持

安装nginx的步骤

1.下载安装包,我们进行编译安装

ps:我是安装在opt目录下的

2.下载相关依赖关系

yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel

3.创建运行用户、组 (Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)

useradd -M -s /sbin/nologin nginx

4、解压

tar -xf nginx-1.22.0.tar.gz

5.进入刚刚解压的目录中

cd nginx-1.22.0/

6.将下面代码复制暂停到目录下回车。PS:请把中文删除,中文是解释对应命令的意思

./configure --prefix=/usr/local/nginx \ --user=nginx \

#指定用户名

--group=nginx \

#指定所在组

--with-http_ssl_module \

#支持http协议

--with-http_v2_module \

#支持http2.0协议

--with-http_realip_module \

#支持从客户端获取真实ip

--with-http_stub_status_module \

#支持访问nginx状态信息的方法

--with-http_gzip_static_module \

#支持对页面进行压缩的功能

--with-pcre \

#支持pcre库

--with-stream \

#可以支持stream模块,也就是可以支持四层代理

--with-stream_ssl_module \

#可以支持加密传输的四层代理

--with-stream_realip_module

#运行nginx从代理(proxy) 协议的头部获取客户端的真实ip地址

6.make && make install

7.cd /usr/local

8.chown -R nginx.nginx nginx/ #修改权限

cd nginx/

ll

conf:nginx的配置文件,所有的配置文件都在该目录中。nginx.conf

html: 保存的是nginx的web文件,也就是工作目录。也可以更改。50x的web文件是默认的报错展示页面

logs:日志文件。PS:位置可以改

sbin: nginx的二进制启动的脚本文件

9.在nginx目录下

ln -s /usr/local/nginx/sbin/nginx /usr/sbin #让系统识别nginx的操作命令

10.nginx -t #检测配置文件语法和配置项是否正确

11.vim /lib/systemd/system/nginx.service

12.将下面内容复制进去,然后保存退出

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=/usr/local/nginx/run/nginx.pid

#注意文件位置,如果不对 启动不了

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

#注意启动文件位置

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s TERM $MAINPID

Install

WantedBy=multi-user.target

ps:名词解释

ExecReload=/bin/kill -s HUP $MAINPID

kill -s HUP $MAINPID

HUP:重新启动服务

ExecStop=/bin/kill -s TERM $MAINPID

kill -s TERM $MAINPID

TERM :关闭服务

13.mkdir run #创建一个run目录

14.cd conf/

15.编译 vim nginx.conf 文件

pid /usr/local/nginx/run/nginx.pid;

16.重启服务

systemctl daemon-reload

systemctl restart nginx

17.cd .. #进入nginx目录下

cd html/ #进入html目录下

18.vim index.html

编译文件随便写内容,这里的内容如果是中文会显示乱码,很正常,这是在另外的配置文件修改的

然后验证,前提防火墙和安全机制都关闭了

这边实际上已经安装完成并验证成功

nginx命令解释:

nginx -t:检测配置文件语法和配置项是否正确

nginx -v:显示nginx的版本

nginx -V:即显示版本又显示配置项

nginx -signal:向nginx的主程序发送信号(stop restart reload)

nginx除了编译安装还有yum安装

yum安装:编译安装和yum不要同时使用。也就是两个服务不要即yum安装又编译安装,系统默认识别的是yum安装

yum -y install epel-release #yum安装必须先安装这个

yum -y install nginx #然后才安装nginx

面试题:

nginx的配置文件:

nginx.conf配置文件当中的内容:

PS:上图events内容,默认是1024个如果想要改大需要配置下面的文件

PS:这是在文件的最底下添加内容

PS:之前安装实验乱码的情况,可以修改上图的字符集来完成

总结一下配置文件:

全局模块

events模块:配置连接数

http模块:代理地址,日志,虚拟主机等等都在http中

一个http模块中,可以有多个server块,server模块只能在http模块中。

location模块只能写在server模块当中,一个server模块可以有多个location(匹配工作目录)

如何更改默认工作路径

下面是root与alias的区别与实验:

root路径在默认html中实验:

在默认html目录下创建test目录与之对应的index.html。页面内容

在index.html文件中添加一下内容

可以在浏览器查看结果

下面是用使用root在opt目录下实验,也就是更改默认路径

创建要访问的页面内容

下面是用alias实验:

因为我们是访问同一个test页面内容,之前已经创建过了,这边就不需要再重新创建了,注意,访问的页面没有时,一定要创建,不然实验没有意义

总结:

root和alias:指定工作目录的区别 root是拼接 /opt/html/test/index.html

alias是精确指定:

/test URI

/opt/html/test

两者区别

root可以在server模块中,但是alias只能在location中

alias匹配的uri 是/必须要以/结尾,root不需要

实验题:

123访问test用root

456访问动画用户alias

实验题:

实现访问状态统计:

首先先进入配置文件

添加status

检查是否有错误,没有错误就重启服务

在浏览器访问

名词解释

Active connections: 1 #表示当前活动的连接数 三个数字:已经处理的连接数,成功tcp握手次数 已处理的请求数

server accepts handled requests 16 16 16 Reading: 0 Writing: 1 Waiting: 0 reading: 表示当前正在读取客户端请求的连接数。服务器正在从客户端读取数据。 writing: 表示服务器正在讲响应的数据发送给客户端 waiting: 有连接处于空闲状态。等待新的连接

实验题:

实现基于客户端访问控制:

模拟两台客户端。此时两台客户端都已经关闭防火墙和安全机制

先实验一下,两台客户端是否可以正常访问

这里可以看到访问没有问题

配置文件

实验结果

实验题:

如何使用域名的nginx:

配置文件

创建访问目录

创建访问的内容

配置hosts文件

实验结果:ps想要访问需要提前配置hosts文件,不然访问不了

衍生实验:

基于ip地址的虚拟主机

实验结果

基于端口

实验结果

实验题:

需要授权:

首先先安装工具

yum -y install httpd-tools

我这里已经安装过了

创建一个用户密码

配置权限

配置文件

重启配置文件

实验结果

总结:

核心nginx配置文件

全局:主要是用户和工作进程

events:连接数

http:虚拟主机和页面配置,代理

http模块当中可以有多个server多个虚拟主机,一个虚拟主机就是一个网站

server只能在http模块中,排除stream,它可以配置server

location只能在server模块中,一个server可以有多个location

location的作用:匹配URI

root:拼接

alias:精确

相关推荐
荣--20 小时前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森21 小时前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜2 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB3 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode4 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220705 天前
如何搭建本地yum源(上)
运维
ping某6 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树888 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠8 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质8 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务