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:精确

相关推荐
2501_9277730726 分钟前
Linux操作系统编程——网络
linux·运维·网络
jiunian_cn31 分钟前
【Linux】线程
android·linux·运维·c语言·c++·后端
泽虞1 小时前
《LINUX系统编程》笔记p3
linux·运维·服务器·c语言·笔记·面试
苹果醋32 小时前
Java并发编程-Java内存模型(JMM)
java·运维·spring boot·mysql·nginx
dingcb1683 小时前
4090服务器无法sudo apt update 问题解决
运维·服务器
头发那是一根不剩了3 小时前
服务器硬盘进行分区和挂载
linux·运维·服务器
心一信息4 小时前
如何通过华为无线控制器添加一个名为yunwei的无线网络
运维·网络·华为
TDengine (老段)4 小时前
TDengine IDMP 运维指南(4. 使用 Docker 部署)
运维·数据库·物联网·docker·时序数据库·tdengine·涛思数据
三婶儿4 小时前
在没有客户端的客户环境下,如何用 Python 一键执行 MySQL 与达梦数据库 SQL
运维·后端·python
xcs194054 小时前
AI 自动化编程 trae 体验2 帮我分析一个项目
运维·自动化