Linux 中间件Nginx

道阻且长,行则将至


前言

提示:这里可以添加本文要记录的大概内容:

当提到 Linux 中间件,Nginx(发音为“engine X”)是一个被广泛使用的高性能Web服务器和反向代理服务器。它以其卓越的性能、可靠性和灵活性而受到众多网站和开发者的青睐。作为一款开源软件,Nginx在众多企业和个人项目中扮演着重要的角色。

无论您是初学者还是有经验的管理员、开发人员,本文将为您提供适用的指南和步骤,帮助您了解和使用Nginx,从而轻松构建稳定、高效的Web应用程序。

让我们开始探索Nginx的世界吧!


提示:以下是本篇文章正文内容,下面案例可供参考

一、Nginx是什么?

中间件(中间件是指在不同应用程序或系统之间传递数据、消息或请求的一种软件组件。它可以充当应用程序之间的"桥梁",在数据传输的过程中进行处理、转换或增加功能。)

轻量级、高性能(官方给出的数据是比Apache好100倍),国内一般都是混合使用这两款中间件的,nginx性能好,apache稳定。

Nginx最初由俄罗斯的程序设计师Igor Sysoev创建并首次发布于2004年,其设计目标是解决C10K问题,即如何支持高并发连接。借助其事件驱动的架构和轻量级进程模型,Nginx能够高效地处理并发请求,具备出色的负载均衡和反向代理能力。

Nginx的优点不仅仅在于其出色的性能。它还具备灵活的配置选项,使得开发人员可以根据项目需求进行定制化配置。Nginx还支持强大的模块化体系结构,允许用户通过添加模块来扩展其功能,如缓存、gzip压缩、SSL/TLS支持等。

二、安装Nginx

两中安装方法,编译安装yum安装

编译安装是需要安装依赖的

  • 依赖:openssl-devel、zlib-devel、ncurses-devel、pcre-devel、gcc、gcc-c++

yum安装

  • nginx的rpm包在epel源中
    也就是需要配置epel的yum源才能安装

编译安装

nginx 压缩包位置
下载位置:https://nginx.org

https://nginx.org/download/nginx-1.24.0.tar.gz

第一步:下载nginx的压缩包

[root@localhost html]# wget http://nginx.org/download/nginx-1.24.0.tar.gz 1
这里没有wget的同学,使用yum install wget -y 就可以下载啦

这时候在当前目录下会出现nginx+版本号+后缀的压缩包
在这里插入图片描述

第二步:安装依赖软件

[root@localhost ~]# yum install openssl-devel zlib-devel ncurses-devel pcre-devel

gcc gcc-c++ -y

第三步:解压缩进入解压目录

[root@localhost ~]# tar xvf  nginx-1.24.0.tar.gz
[root@localhost ~]# cd nginx-1.24.0

第四步:安装nginx

[root@localhost nginx-1.24.0]# mkdir /usr/local/nginx
[root@localhost nginx-1.24.0]#  ./configure --prefix=/usr/local/nginx && make && make install
可以查看上一条命令的执行情况 echo $? 如果输出0的话说明命令执行成功

nginx目录结构

[root@localhost nginx]# ls
conf  html  logs  sbin
  • conf:这个目录存放的是nginx的配置文件
  • html:这个目录是nginx默认网站的根目录
  • logs:这个是nginx的日志文件目录
  • sbin:这个是nginx的启动程序的目录

第四步:启动nginx

[root@localhost sbin]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx
[root@localhost sbin]# lsof -i :80

注意:如果显示这个提示说明80端口被占用了
在这里插入图片描述
这里有两个解决方法:
1)修改nginx的默认端口号
2)释放80端口(关掉对应的进程)

这里我们选择第二种方法
查看80端口,lsof -i:80,发现是httpd占用的,直接杀掉
在这里插入图片描述

lsof -i:80
pkill httpd

启动

扩展

1)重新启动nginx

方法1:./nginx -s reload
方法2:pkill杀死进程,再次启动

在这里插入图片描述
在这里插入图片描述

2)nginx开机自动启动

在这里我们得知道一个文件:/etc/rc.d/rc.loacl
这个文件开开机时的最后一步时会将里面的命令执行一遍。

[root@localhost sbin]# vim /etc/rc.d/rc.local

写入:/usr/local/nginx/sbin/nginx

在这里插入图片描述
注意:这里centos7之后与centos7之前使用这里的操作是不一样的。centos7之前的直接写入保存退出就可以,centos7之后的写入保存退出之后还需要执行一个命令:chmod +x /etc/rc.d/rc.local 才可以使用。

[root@localhost sbin]# chmod +x /etc/rc.d/rc.local

这里我们也可以将启动nginx的命令写入一个脚本,然后开机执行脚本也可以。

测试nginx

这里确保我们的物理机可以和虚拟机进行通讯,不会弄的小伙伴可以去看我之前写的链接: Linux配置网络的博文

在物理机上输入虚拟机的IP地址就可以查看
在这里插入图片描述
这里我们可以通过修改网站根目录来修改页面上的内容

在这里插入图片描述

vim index.html

修改想要展现的内容,保存退出
在这里插入图片描述
然后重新访问
在这里插入图片描述
啊啊啊,这里乱码了。不管了就这样吧!!!
解决办法是在文件里加一个中文的字符集
在这里插入图片描述

三、Nginx的配置文件

1、什么是nginx的配置文件

Nginx的配置文件是一个文本文件,用于配置Nginx服务器的行为、路由规则、代理设置、日志记录等各种参数和选项。这些配置文件通常采用简单的语法结构,由一系列指令和块组成,以控制Nginx服务器的行为。

总的来说,Nginx配置文件是管理和配置Nginx服务器行为的核心文件,通过对配置文件的修改和调整,可以实现各种不同的服务器行为和功能。

2、配置文件

1)配置文件的位置

yum安装:/etc/
编译安装:安装位置/conf
文件名都叫:nginx.conf

这里我们是编译安装的文件位置在:/usr/local/nginx/conf/nginx.conf

2)配置文件的基本结构

  • 全局块(main): 包含全局性的配置指令,如工作进程数、用户权限、日志文件位置等。这些指令影响整个Nginx服务器的行为。
  • 事件块(events): 定义Nginx服务器的事件模型,包括事件驱动的工作方式和连接超时等参数。
  • http块: 包含HTTP服务器的配置指令,如HTTP请求的处理方式、虚拟主机的设置、HTTP代理的配置等。在http块内部,还可以包含server块和location块,用于配置具体的虚拟主机或路径的行为。
  • server块: 定义了一个虚拟主机(server),包括该虚拟主机的监听端口、域名、SSL证书、代理设置等。
  • location块: 定义了一个URI的匹配规则和对应的行为,如代理转发、静态文件服务、重定向等。

例:

# 全局块
user nginx;             # Nginx运行的用户
worker_processes auto;  # Nginx工作进程数,使用CPU核心数自动设置
error_log /var/log/nginx/error.log;  # 错误日志文件路径

# events块
events {
    worker_connections 1024;  # 每个工作进程的最大连接数
}

# http块
http {
    include mime.types;  # 包含MIME类型配置文件

    # 默认类型
    default_type application/octet-stream;

    # 日志格式
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;  # 访问日志文件路径

	# server块
	server {
        listen       80;		# 网站的端口号
        server_name  localhost;		# 网站的域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;	# 网站的根目录
            index  index.html index.htm;	# 网站的默认首页
        }

    sendfile on;              # 开启sendfile传输文件
    tcp_nopush on;            # 开启tcp_nopush
    tcp_nodelay on;           # 开启tcp_nodelay
    keepalive_timeout 65;     # 客户端连接保持时间
    types_hash_max_size 2048; # MIME类型哈希表大小

    include /etc/nginx/conf.d/*.conf;  # 包含其他配置文件
    include /etc/nginx/sites-enabled/*;  # 包含虚拟主机配置文件
}

可以使用vim打开配置文件

[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

3)server块里面的常用配置

server就是虚拟主机,可以写多个;从而对于不同的页面。

server {
listen 80;
server_name www.web1.com;
root /usr/lcaol/nginx/html;
index index.html index.htm;
access_log logs/host.access.log main;
error_log logs/host.error.log main;
}

listen 80; # 网站的端口号
server_name localhost; # 网站的域名
root html; # 网站的根目录
index index.html index.htm; # 网站的默认首页

location(了解)

location / { … } 是 Nginx 配置中非常重要的一个部分,用于配置服务器上不同 URL 路径的行为。

  • location / { … } 定义了一个匹配根路径 / 的 location 块。这表示任何以服务器域名访问的请求都会匹配到这个 location 块。
  • 在 { … } 内部是该 location 的配置指令。这些指令可以控制服务器对于该路径下请求的行为,比如代理转发、静态文件服务、重定向等。

下面是一些常见的 location / { … } 的用法:

1、静态文件服务: 可以配置 Nginx 提供静态文件服务,直接返回服务器上的静态文件,而不需要通过后端应用程序处理。

location / {
    root /path/to/static/files;
    index index.html index.htm;
}

这样配置后,当用户访问服务器根路径时,Nginx 将在 /path/to/static/files 目录下寻找 index.html 或 index.htm 文件,并返回给用户。

2、代理转发: 可以配置 Nginx 将请求转发给后端应用程序服务器进行处理。

location / {
    proxy_pass http://backend_server;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

这个配置会将所有根路径下的请求转发给名为 backend_server 的后端服务器进行处理。同时,通过 proxy_set_header 设置一些请求头,以便后端服务器获取客户端真实 IP 等信息。

3、反向代理缓存: 可以配置 Nginx 将请求转发给后端服务器,并缓存后端服务器的响应,加快后续相同请求的响应速度。

location / {
    proxy_pass http://backend_server;
    proxy_cache my_cache;
    proxy_cache_valid 200 304 10m;
    proxy_cache_key "$scheme$request_method$host$request_uri";
}

个配置会将所有根路径下的请求转发给后端服务器,并在 Nginx 中设置缓存。proxy_cache 定义了缓存名称,proxy_cache_valid 定义了缓存有效期,proxy_cache_key 定义了缓存的键。

总之,location / { … } 是 Nginx 配置中非常重要的一部分,通过它可以控制不同 URL 路径下请求的行为,实现诸如静态文件服务、代理转发、反向代理缓存等功能。


总结

常用到的命令

第一步:下载
[root@localhost html]# wget http://nginx.org/download/nginx-1.24.0.tar.gz
第二步:安装依赖
[root@localhost ~]# yum install openssl-devel zlib-devel ncurses-devel pcre-devel
gcc gcc-c++ -y
第三步:安装nginx
[root@localhost ~]# tar xvf nginx-1.24.0.tar.gz
[root@localhost ~]# cd nginx-1.24.0
[root@localhost nginx-1.24.0]# ./configure --prefix=/usr/local/nginx && make &&
make install
第四步:启动程序:
[root@localhost sbin]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx
[root@localhost sbin]# lsof -i :80
扩展
1、重启nginx
方法1:
[root@localhost sbin]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -s reload
方法2:
先pkill杀死
然后再启动
2、让nginx开机自动启动
[root@localhost ~]# echo "/usr/local/nginx/sbin/nginx">>/etc/rc.d/rc.local
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

海粟石子

生而为人

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

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

打赏作者

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

抵扣说明:

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

余额充值