Nginx基本使用

article/2025/8/17 6:06:45

一、Nginx简介

​ Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·西索夫)所开发,供俄国大型的入口网站及搜索引擎Rambler(漫步者)(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。

1. 优点

  1. 占用内存少,并发能力强
  2. Nginx专为性能优化而开发, 在高并发的情况下,能够支持高达 50,000 个并发连接数的响应.
  3. Nginx支持热部署, 可以在不间断服务的情况下,对软件版本进行升级.

2. 应用场景:

  1. http服务器: Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。

  2. 虚拟主机: 可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。

  3. 反向代理,负载均衡 : 当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

二、Nginx安装

1、 官网下载nginx

网址:http://nginx.org/

下载源码压缩包

2、准备安装环境

1. 安装gcc环境

yum install gcc-c++

2. 安装PCRE

yum install -y pcre pcre-devel

nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库

3. 安装zlib

yum install -y zlib zlib-devel

nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

4. 安装OpenSSL

yum install -y openssl openssl-devel

OpenSSL 是一个强大的安全套接字层密码库,nginx不仅支持http协议,还支持https,所以需要在linux安装openssl库。

3、安装Nginx

1. 解压Nginx

tar -xvf nginx-1.17.8.tar 

2. 生成Makefile文件

进入解压后的文件夹,执行 configure 命令

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

3. 创建零时文件目录

mkdir /var/temp/nginx/client -p

4. 编译

make

5. 安装

make install

三、Nginx基本使用

进入 prefix=/usr/local/nginx 指定的安装目录,其中有三个文件夹:

html目录:存放静态资源,当nginx被用作静态资源服务器时,要将html的资源放在这里,然后就可以被访问到了。

conf目录:存放各种配置文件,

sbin目录:存放可执行文件

# 1、启动 Nginx ,进入sbin目录,执行:
./nginx
# 2、查看是否启动成功 【有两个Nginx进程就对了】
ps aux | grep nginx
# 3、关闭
./nginx -s stop
# 4、重新加载配置文件
./nginx -s reload

四、Nginx配置

4.1 配置多个虚拟主机

​ Nginx的虚拟主机类似于Tomcat 的web应用,Nginx可以配置多个虚拟主机,Tomcat通过应用名区分不同的应用,Nginx通过端口号和域名来决定访问的是哪个虚拟主机。

​ 在conf目录下有一个nginx.conf配置文件:

worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  www.mochen2.com;location / {root   html2;index  index.html index.htm;}}server {listen       80;server_name  www.mochen.com;location / {root   html;index  index.html index.htm;}}}

在http中可以配置多个server,一个server就代表一个虚拟主机,

listen指定该虚拟主机对应的端口号。

server_name则指定虚拟主机对应的域名。

当有请求时,首先根据请求的端口号判断访问哪个虚拟主机,若找到多个对应的虚拟主机,根据域名进行判断。

server_name可以设置:

  1. 多个域名并用空格分开。
  2. 以 * 通配符开头的域名
  3. 以 * 通配符结尾的域名
  4. 正则表达式

匹配顺序也是如上所示,首先用完整域名进行匹配,若无法匹配成功,则与 以 * 开头的匹配,以此类推,匹配到一个就不再进行匹配。

location

location用于匹配请求的资源路径【也就是域名后边的URI】,如这里的 / 就表示匹配所有路径,后边大括号里的root用于指定资源的根目录,这里的html【默认值】是相对路径,指的是安装目录下的html文件夹。也可以使用绝对路径将此虚拟主机的更目录指向服务器的任意位置【当然也要nginx有权限访问】,如下例:

location /kk {root   /test/html;index  index.html index.htm;
}

这里的 /kk 表示此虚拟主机可以匹配 如:www.mochen.com/kk/xx.html 之类的请求,请求访问的资源就是 /test/html/kk/xx.html。

index类似于Tomcat中的welcome-file-list用于指定欢迎页,一般是相对路径,如这里代表访问www.mochen.com/kk时默认访问 /test/html/kk/index.html 文件。

location之后可以更多种路径匹配符,/ 表示匹配一切请求,同样优先级也是最低的。

4.2 反向代理

1、何为反向代理

​ 代理很好理解,就是代替某人做某些事情。那反向又是什么意思呢?反向与正向相对,因为反向代理与正向代理正好相反,就是一个名称而已。

正向代理:由代理服务器代理客户端访问互联网资源。如VPN就是正向代理。反向代理:由代理服务器代理服务器,向客户端提供服务。

image-20210309165923346

image-20210309165948826

Nginx就可以充当着个反向代理服务器,由它接受请求并按一定的规则转发到后台服务器。

2、配置反向代理服务器

upstream ssm{server 127.0.0.1:8082;
}server {listen       80;server_name  www.mochen.com;location /ssm-web {proxy_pass http://ssm;}location / {root html;index edu-boss/index.html;}
}

在location中通过proxy_pass进行请求转发设置。

在upstream中通过server指定被代理服务器访问地址。

3、负载均衡

​ 当系统面临大量用户访问,负载过高的时候,通常会使用增加服务器数量来进行横向扩展, 负载均衡主要是为了分担访问量,将请求合理分发给不同的服务器, 避免临时的网络堵塞。

负载均衡策略:

*轮询:*默认策略, 每个请求按照时间顺序逐一分配到不同的服务器,如果某一个服务器下线,能自动剔除。

配置方式:【无需配置】

upstream lagouServer{# 用server定义 HTTP地址server 192.168.52.100:8081;server 192.168.52.100:8082;
}

*weight:*可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1.

#负载均衡
upstream lagouServer{# 用server定义 HTTP地址server 192.168.52.100:8081 weight=1;server 192.168.52.100:8082 weight=10;
}

*ip_hash:*保证每个访客固定访问一个后端服务器,

#负载均衡
upstream lagouServer{ip_hash;# 用server定义 HTTP地址server 192.168.52.100:8081 weight=1;server 192.168.52.100:8082 weight=10;
}

*least_conn:*把请求转发给连接数较少的后端服务器

Nginx服务器之负载均衡策略(6种)


maven多环境配置

​ 在不同的环境中部署就要手动修改为对应环境的配置,这样太麻烦了以及这样也会很容易出错。 多环境配置就是通过maven的相关配置来在打包时指定各个环境对应配置文件。

1、为开发环境和生产环境各写一个配置文件,在主配置文件需要的地方引入。

image-20210310095057836

2、在pom文件中进行配置

<profiles><profile><id>dev</id><properties><!-- 测试环境 --><env>development</env></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><id>prod</id><properties><!-- 正式环境 --><env>product</env></properties></profile>
</profiles><build><finalName>web</finalName><filters><filter>src/main/resources/filter/${env}.properties</filter></filters><resources><resource><directory>src/main/resources</directory><excludes><exclude>filter/*.properties</exclude></excludes><filtering>true</filtering></resource></resources>
</build>

profile的id定义环境标识,在编译时通过指定该标识表名使用什么环境进行编译。

在properties中指定环境变量env【代表各环境配置文件名】,在下方的filter中使用该变量选用对应环境的配置文件。

activation配置默认使用哪个环境。

build中的resource用于配置打包时的资源,默认就是src/main/resources下的全部文件,excludes表示那些东西不需要出现在最终的jar或war包中。

filtering表示这些资源是否需要引入上方filter配置的文件中的数据,也就是,只有设置了true,在jdbc.properties中 ${xxx} 才能生效。

3、使用mvn打包

命令方式:

打本地包 mvn -Pdev install 或者mvn install(因为本例activeByDefault配的为true)
打产品包 mvn -Pprod install

idea中使用MVN:

image-20210310100457409


http://chatgpt.dhexx.cn/article/MsLCwsne.shtml

相关文章

Nginx使用手册

Nginx使用手册 1、下载2、Linux下使用3、Windows下使用4、配置详解 1、下载 地址&#xff1a;http://nginx.org/en/download.html 2、Linux下使用 cd /usr/loacal/nginx/sbin/ cd /www/server/nginx/sbin #宝塔面板 ./nginx #启动 ./nginx -s stop #停止 ./nginx -s quit #安…

关于Nginx的使用

(一) Nginx的安装需要确定Linux安装相关的几个库&#xff0c;否则配置和编译会出现错误。 一次性安装gcc编译器、openssl库、pcre库、zlib库&#xff0c;执行命令如下&#xff1a; yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y 解压后在nginx主…

nginx使用!

一&#xff1a;概述 Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器&#xff0c;特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好&#xff0c;中国大陆使用 Nginx 网站用户有&#xff1a;百度、京…

Nginx使用介绍

1. Nginx基本概念 1.1 常见服务器对比 截止2021年web服务器市场市占率&#xff0c;数据来源&#xff1a;https://news.netcraft.com/ 服务器名称简介特点IIS全称&#xff08;Internet Information Services&#xff09;即互联网信息服务&#xff0c;是由微软公司提供的基于 w…

nginx使用配置(亲测自用)

文章目录 一、原理概述1、请求转发的理解 二、作用三、案例1.动静分离将静态资源放入Nginx目录下1.1) 可以先在Nginx文件夹中创建存放静态资源的目录static1.2) 将静态资源放入static文件夹1.3) 修改配置文件1.4) 实现Nginx的高可用 2.负载均衡常见的几种负载均衡方式2.1) 轮询…

Nginx简单使用

安装龙蜥操作系统 镜像文件在这里下载就行 下载之后新建虚拟机 ISO选择刚才下载文件即可 具体配置可以照我来 也可自定义 基本工具安装 安装一下最基本的网络工具 yum install net-tools openssh-server wget tar make vim -y测试一下ssh连接 方便后期操作 修改主机名 …

nginx使用(基于docker)

一、安装Nginx 1. 搜索 nginx 镜像 docker search nginx 2、拉取nginx镜像 docker pull nginx 3、创建容器&#xff0c;设置端口映射、目录映射 配置 user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_co…

Nginx使用及配置

nginx是什么&#xff1f; nginx是俄罗斯人 Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的一个十分轻量级的HTTP服务器。它是一个高性能的HTTP和反向代理服务器&#xff0c;同时也可以作为IMAP/POP3/SMTP的代理服务器。nginx使用的是BSD许可。 Nginx 以事件驱动的方式…

nginx使用以及配置

nginx主要使用的地方就是用来进行反向代理的http服务器, 主流的Web服务器有: 1、Apache&#xff0c;开源免费&#xff0c;具有简单、高速、性能稳定等特点&#xff0c;可作代理服务器使用; 2、Nginx&#xff0c;是一种高性能的HTTP和反向代理web服务器&#xff0c;支持高并发…

Nginx介绍及基本使用

1.介绍 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力在同类型的网页服务器中表现较好&#xff0c;中国大陆使用nginx的网站有&#xff1a…

nginx的使用

目录 1.何为nginx 2.如何使用 3.关于nginx配置文件 4.nginx三大核心 4.1 反向代理 4.2 负载均衡 4.3 动静分离 4.4 高可用 4.4.1 安装keepalived 代理服务器--使用比较多的为nginx代理服务器。 1.何为nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,其…

MySQL 的索引

文章目录 索引简介普通索引主键索引唯一索引全文索引外键索引复合索引复合索引生效的几种方式复合索引会失效的情况 索引的优点高性能的索引策略独立的列前缀索引和索引的选择性复合索引选择合适的索引列顺序聚簇索引索引的 Btree 结构聚簇索引和非聚簇索引的区别聚簇索引的优点…

[MySQL]索引详解

专栏简介 :MySql数据库从入门到进阶. 题目来源:leetcode,牛客,剑指offer. 创作目标:记录学习MySql学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 1.什么是索引? 当我们想要在书中查找某个知识点时 , …

MySQL:索引特性

索引 0. 预备知识 索引是一个“物美价廉”的特性&#xff0c;用来提高数据库的性能。不需要改程序、调SQL、只需要正确的创建索引&#xff0c;查询速度就能提高成百上千倍&#xff0c;但查询速度的提升也带来了插入、更新、删除速度的下降。 0.1 认识磁盘 MySQL对数据进行增…

MySQL的索引与事务

作者&#xff1a;敲代码の流川枫 博客主页&#xff1a;流川枫的博客 专栏&#xff1a;和我一起学java 语录&#xff1a;Stay hungry stay foolish 给大家推荐一款好用的神器Apifox Postman Swagger Mock JMeter。集接口文档工具、接口Mock工具、接口自动化测试工具、接…

什么是 MySQL 索引?

什么是索引&#xff1f; 假设我们有一张数据表 employee(员工表)&#xff0c;该表有三个字段&#xff08;列&#xff09;,分别是name、age 和address。假设表employee有上万行数据(这公司还真大&#xff09;&#xff0c;现在需要从这个表中查找出所有名字是‘ZhangSan’的雇员信…

MySQL 索引结构

前言 在上一篇 MySQL 索引类型 中&#xff0c;我们已经了解了索引的基本概念以及分类&#xff0c;那么&#xff0c;索引的结构是什么样的&#xff1f;为什么索引可以这么快&#xff1f;这一篇文章将继续探讨索引的实现原理和数据结构&#xff0c;主要介绍 B 树索引和 Hash 索引…

MySQL中索引的使用方法

1. 为什么要加索引&#xff1f; ​一般的应用系统&#xff0c;读写比例在10:1左右&#xff0c;而且插入和一般的更新操作很少出现性能问题&#xff0c;遇到最多的&#xff0c;也是最容易出问题的&#xff0c;还是一些复杂的查询操作&#xff0c;所以查询语句的优化显然是重中之…

MySQL 索引概览

前言 在 SQL 优化中&#xff0c;索引是至关重要的一环&#xff0c;能给查询效率带来质的飞跃&#xff0c;但是索引并不是万能的&#xff0c;不合理的索引设计甚至会拖慢查询效率。本文将详细介绍索引的概览和分类&#xff0c;并讨论使用索引时应该权衡的要素&#xff0c;关于索…

MYSQL的索引和存储引擎

文章目录 MYSQL的索引和存储引擎介绍索引的分类单列索引-普通索引单列索引-唯一索引单列索引-主键索引组合索引全文索引空间索引 索引内部原理剖析索引内部原理-Hash算法索引内部原理-二叉树和二叉平衡树索引内部原理-BTREE树MyISAM存储引擎InnoDB存储引擎 索引的特点索引的创建…