Nginx 学习笔记

Nginx 学习笔记

文章目录

    • [Nginx 学习笔记](#Nginx 学习笔记)
      • [一、Nginx 简介](#一、Nginx 简介)
        • [1 什么是 nginx?](#1 什么是 nginx?)
        • [2 基本概念](#2 基本概念)
      • [二、Nginx linux安装](#二、Nginx linux安装)
        • [1 准备工作](#1 准备工作)
        • [2 上官网下载安装包](#2 上官网下载安装包)
        • [3 安装 nginx 相关素材(依赖)](#3 安装 nginx 相关素材(依赖))
        • [4 安装 nginx](#4 安装 nginx)
        • [5 启动 nginx](#5 启动 nginx)
        • [6 访问 nginx](#6 访问 nginx)
      • [三、Nginx 常用指令](#三、Nginx 常用指令)
        • [1 查看nginx 版本号](#1 查看nginx 版本号)
        • [2 启动 nginx](#2 启动 nginx)
        • [3 停止 nginx](#3 停止 nginx)
        • [4 重加载 nginx](#4 重加载 nginx)
      • [四、Nginx 配置文件](#四、Nginx 配置文件)
        • [1 nginx配置文件位置](#1 nginx配置文件位置)
        • [2 nginx配置文件组成](#2 nginx配置文件组成)
      • [五、Nginx 配置实例](#五、Nginx 配置实例)
        • [实例(一) - 简单反向代理](#实例(一) - 简单反向代理)
          • [(1) 准备工作:在linux 中安装 tomcat,使用默认端口8080.](#(1) 准备工作:在linux 中安装 tomcat,使用默认端口8080.)
          • [(2) 访问过程分析](#(2) 访问过程分析)
          • [(3) 配置 windows 域名](#(3) 配置 windows 域名)
          • [(4) 在 nginx 配置反向代理](#(4) 在 nginx 配置反向代理)
          • [(5) 重加载验证](#(5) 重加载验证)
        • [实例(二) - 多服务器分发](#实例(二) - 多服务器分发)
          • [(1) 准备工作:准备两个 tomcat服务器,一个8080,一个8081.](#(1) 准备工作:准备两个 tomcat服务器,一个8080,一个8081.)
          • [(2) 具体配置](#(2) 具体配置)
          • [(3) 开放9001端口](#(3) 开放9001端口)
          • [(4) 校验](#(4) 校验)

一、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指令。

shell 复制代码
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 目录下,有启动的脚本。

启动:

shell 复制代码
./nginx

查询启动的进程:

slell 复制代码
ps -ef | grep nginx

成功启动。

6 访问 nginx

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

三、Nginx 常用指令

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

shell 复制代码
/usr/local/nginx/sbin
1 查看nginx 版本号
shell 复制代码
./nginx -v
2 启动 nginx
shell 复制代码
./nginx
3 停止 nginx
shell 复制代码
./nginx -s stop
4 重加载 nginx
shell 复制代码
./nginx -s reload

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

四、Nginx 配置文件

1 nginx配置文件位置
shell 复制代码
/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说明

语法:

shell 复制代码
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的安装此处不再赘述,可自行百度安装。

shell 复制代码
## 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:

html 复制代码
<h1> 8080 port !</h1>

访问测试:

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

html 复制代码
<h1> 8081 port !</h1>

访问测试:

(2) 具体配置

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

shell 复制代码
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、查看服务器开放的全部端口。

shell 复制代码
firewall-cmd --list-all 

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

shell 复制代码
# 查看防火墙状态
systemctl status firewalld 

#开启防火墙
systemctl start firewalld 

# 关闭防火墙
systemctl stop firewalld 

# 重启防火墙
systemctl restart firewalld 

3、开放指定的端口。

shell 复制代码
firewall-cmd --permanent --zone=public --add-port=9001/tcp

# 开放端口后,需防火墙重载
firewall-cmd --reload
(4) 校验

edu/a.html

pod/b.html

分发成功。

相关推荐
codingandsleeping5 小时前
浏览器的缓存机制
前端·后端
追逐时光者6 小时前
面试官问:你知道 C# 单例模式有哪几种常用的实现方式?
后端·.net
Asthenia04126 小时前
Numpy:数组生成/modf/sum/输出格式规则
后端
Asthenia04127 小时前
NumPy:数组加法/数组比较/数组重塑/数组切片
后端
Asthenia04127 小时前
Numpy:limspace/arange/数组基本属性分析
后端
我是唐青枫7 小时前
Linux ar 命令使用详解
linux·运维·服务器
Asthenia04127 小时前
Java中线程暂停的分析与JVM和Linux的协作流程
后端
Asthenia04127 小时前
Seata TCC 模式:RootContext与TCC专属的BusinessActionContext与TCC注解详解
后端
自珍JAVA7 小时前
【代码】zip压缩文件密码暴力破解
后端
mljy.7 小时前
Linux《进程概念(上)》
linux