Nginx 学习笔记

发布于:2025-03-29 ⋅ 阅读:(27) ⋅ 点赞:(0)

Nginx 学习笔记


一、Nginx 简介


1 什么是 nginx?

Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。


2 基本概念
  • 正向代理:(先理解什么是正向代理)假如我用我的手机,在浏览器直接访问国外的 www.google.com,显然无法访问,假如 vpn 是一个代理服务器,它可以访问谷歌,于是 vpn找到我说他可以帮我办事,然后 vpn 接收我的请求,替我去请求谷歌服务器,谷歌响应给 vpn 后,vpn 再将响应原封不动的返回给我,全程为我(客户端)服务。这个过程中,对于谷歌服务器,它其实不知道我访问了它,只知道是代理服务器访问了它,并且代理服务器起到服务我(客户端)的作用,这就是正向代理。

  • 1、反向代理:还是上面那个例子,我用我的手机,在浏览器直接访问国外的 www.google.com,我以为我是能直接访问的,于是正常发送请求,但是运营商(代理服务器)在监测到我的请求访问后(我是以这样代入举例,并不代表实际情况就是这样),于是他查找整个美国的google服务器,哪台空闲就转发我的请求,然后再响应给我。整个过程中,代理服务器为目标服务器服务,他不管我具体访问的是哪台目标服务器,其实我也不知道具体有多少台谷歌服务器,只要满足我的需求就行,这就是反向代理。

    在这里插入图片描述

  • 2、负载均衡:负载均衡很好理解,我们单一的服务器一般只能承受小量的访问,假如访问量变大,显然服务器响应不过来,因此先把请求集中到反向代理服务器(nginx就是),然后增加服务器数量,由代理服务器做请求分发,从而分担工作量,这就是负载均衡。

  • 3、动静分离:动、静指的是资源文件,动态资源文件有(jsp、servlet)、静态资源文件有(html、css、js),如果我们把动、静静态资源文件都放在 tomcat 服务器中,只访问动或静资源文件时,势必会对服务器带来不必要的压力。因此 nginx 可以把动态资源、静态资源分开部署。


二、Nginx linux安装


1 准备工作

启动虚拟机。


2 上官网下载安装包

nginx官网:http://nginx.org/

可以到 nginx 官网下载安装包:http://nginx.org/download/


3 安装 nginx 相关素材(依赖)

一共有四个依赖:gcc、openssl-devel、pcre-devel、zlib-devel。

  • 一键安装:

如果一键安装四个依赖,可以使用 yum指令。

yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
  • 一个个单独安装:

如果一个个单独安装,需先自行下载四个安装包,上传到服务器,具体安装步骤可百度查找,本篇文章我采用一键安装,无论采用哪种安装方式,最终效果大同小异。


4 安装 nginx
  • 一、解压:tar -xvf nginx-1.22.1.tar.gz
  • 二、进入解压包内,执行:./configure
  • 三、在执行 ./configure 的目录,执行 make && make install

安装完成后,会在 /usr/local/ 路径下,生成 nginx 的文件夹,在sbin目录下, 有启动脚本。


5 启动 nginx

进入 /usr/local/nginx/sbin 目录下,有启动的脚本。

在这里插入图片描述

启动:

./nginx

查询启动的进程:

ps -ef | grep nginx

在这里插入图片描述

成功启动。


6 访问 nginx

启动成功后,在浏览器输入服务器ip,不加端口号,即可访问nginx。

在这里插入图片描述

三、Nginx 常用指令

使用 nginx 操作名利前提条件:必须进入 nginx 的 sbin 目录。

/usr/local/nginx/sbin
1 查看nginx 版本号
./nginx -v

在这里插入图片描述

2 启动 nginx
./nginx

3 停止 nginx
./nginx -s stop

4 重加载 nginx
./nginx -s reload

比如修改了nginx 的配置文件,不用重启,重加载生效。

四、Nginx 配置文件

1 nginx配置文件位置
/usr/local/nginx/conf/nginx.conf

2 nginx配置文件组成

在这里插入图片描述

(1)全局块

从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,比如上面配置的 worker_processes 1;表示值越大,可以支持的并发处理数据也越多。


(2)events块

events 块涉及的指令主要影响 nginx 服务器与用户的网络连接。比如 worker_connections 1024; 表示支持的最大连接数。


(3)http块

http 块是 nginx 配置最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是,http 块也可以包含 http全局块、server块。


(4)http块中-server块中 location说明

语法:

location [ = | ~ | ~* | ^~ ] url {

}
  • = :用于不含正则表达式的 url 前,要求请求字符串与 url 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
  • ~ :用于表示 url 包含正则表达式,并且区分大小写。
  • ~* :用于表示 url 包含正则表达式,并且不区分大小写。
  • ^~ :用于不含正则表达式的 url 前,要求 Nginx 服务器找到标识 url 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 url 和请求字符串做匹配。

五、Nginx 配置实例

实例(一) - 简单反向代理

实现效果:打开浏览器,在地址栏中输入地址:www.123.com,跳转转到 linux 系统 tomcat主页面中。

(1) 准备工作:在linux 中安装 tomcat,使用默认端口8080.

安装tomcat之前记得先安装jdk,关于jdk的安装此处不再赘述,可自行百度安装。

## tomcat 安装包上传至 /usr/local/tomcat9/
tar -zxvf apache-tomcat-9.0.99.tar.gz

解压后,直接进去 tomcat 的bin目录,启动脚本文件即可。

在这里插入图片描述

成功启动的截图。

(2) 访问过程分析

在这里插入图片描述

(3) 配置 windows 域名

路径:C:\Windows\System32\drivers\etc 底下的 HOSTS

添加:192.168.190.6: www.123.com


(4) 在 nginx 配置反向代理

nginx 配置文件如下:

在这里插入图片描述

(5) 重加载验证

修改配置文件后,需要重新加载:./nginx -s reload

浏览器访问验证:

在这里插入图片描述

实例(二) - 多服务器分发

实现效果:通过 nginx 反向代理,根据访问路径的不同,跳转到不同端口的服务中。
nginx 监听端口为 9001。

(1) 准备工作:准备两个 tomcat服务器,一个8080,一个8081.

在tomcat 9的目录,新建两个文件夹:tomcat8080、tomcat8081,分别把上述 tomcat 的安装包复制进两个文件夹,解压。

  • 对于 tomcat 8080,正常在bin目录下执行脚本文件启动。

  • 对于 tomcat 8081,则需修改配置文件中默认的 8080 端口,修改为8081:

    文件路径:conf/server.xml,修改的端口不止一个,全部修改如下截图:




    在这里插入图片描述


    修改过后保存。


为了方便区分,可以在 8080 的 tomcat 的 webapps 底下,新建一个 edu 文件夹,底下新建一个 a.html:
<h1> 8080 port !</h1>

在这里插入图片描述
访问测试:
在这里插入图片描述

在 8081 的 tomcat 的 webapps 底下,新建一个 pod 文件夹,底下新建一个 b.html:

<h1> 8081 port !</h1>

在这里插入图片描述
访问测试:
在这里插入图片描述

(2) 具体配置

需在 nginx.conf 文件夹中加入一个 server:

server {
        listen   9001;
        server_name  192.168.190.5;

        # ~ /edu/ 其中~的意思是正则匹配的意思,访问路径中包含/edu/则匹配成功
        location ~ /edu/ {
             proxy_pass http://127.0.0.1:8080;
        }


        location ~ /pod/ {
             proxy_pass http://127.0.0.1:8081;
        }
}

(3) 开放9001端口

1、查看服务器开放的全部端口。

firewall-cmd --list-all 

2、如果报错:FirewallD is not running,就是防火墙没开启,需开启防火墙。

# 查看防火墙状态
systemctl status firewalld 

#开启防火墙
systemctl start firewalld 

# 关闭防火墙
systemctl stop firewalld 

# 重启防火墙
systemctl restart firewalld 

3、开放指定的端口。

firewall-cmd --permanent --zone=public --add-port=9001/tcp

# 开放端口后,需防火墙重载
firewall-cmd --reload

(4) 校验

edu/a.html
在这里插入图片描述
pod/b.html

在这里插入图片描述

分发成功。