Nginx反向代理服务器搭建(超详细)

article/2025/8/22 7:56:02

一、简介

Nginx (engine x) 是一个高性能的Web服务器和反向代理服务器,也可以作为邮件代理服务器。

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器;

正向代理类似一个跳板机,代理访问外部资源。比如:我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器,它能访问那个我不能访问的网站,于是我先连上代理服务器,告诉它我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。

Nginx 特点是占有内存少,并发处理能力强,以高性能、低系统资源消耗而闻名,Nginx官方测试为5万并发请求。

二、负载均衡策略常用的几种

  1. 轮询策略(默认) :将请求通过Nginx,平均分配给我们的资源服务器。
  2. 权重策略:根据每台服务器设置的所占比,进行请求转发。
  3. 最少连接: Nginx会将请求连接数最少的一台服务器,进行将它分配请求。
  4. IP Hash:根据浏览器的ip地址,进行hash及取模运算,然后得到一个索引值,在浏览器IP地址未改变情况下,一直访问该台服务器,类似单机策略。

三、安装Nginx

Nginx的安装需要确定Linux安装相关的几个库,否则配置和编译会出现错误, 具体的检查安装过程为:

yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y

将nginx-1.14.2.tar.gz文件上传后,解压下载下来的nginx文件,执行命令:

tar -zxvf nginx-1.14.2.tar.gz

切换至解压后的nginx主目录,执行命令:

cd nginx-1.14.2

在nginx主目录nginx-1.14.2下执行命令 (其中--prefix是指定nginx安装路径)  注意:等号左右不要有空格

./configure --prefix=/usr/local/nginx

执行命令进行编译:

make

执行命令进行安装:

make install

安装成功后,可以切换到/usr/local/nginx目录下,查看内容:

cd /usr/local/nginx

四、启动

普通启动

切换到nginx安装目录的sbin目录下,执行:

cd sbin./nginx

通过配置文件启动

./nginx -c /usr/local/nginx/conf/nginx.conf/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

其中-c是指定配置文件,而且配置文件路径必须指定绝对路径

检查Nginx是否启动

通过查看进程:

ps -ef | grep nginx

 在开放端口后在外部浏览器访问ip:80可以看到:

五、优雅地关闭Nginx

找出nginx的进程号:

ps -ef | grep nginx

执行命令:

kill -QUIT 主pid

或者是:(选一个kill来关闭即可)

kill -TERM 主pid

六、重启Nginx

./nginx

七、检查及其他操作

当修改Nginx配置文件后,可以使用Nginx命令进行配置文件语法检查,用于检查Nginx配置文件是否正确

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t

 查看版本

./nginx -v

八、Window 安装搭建Nginx(了解) 

在官方网站下载最新windows版的nginx:http://nginx.org/en/download.html

将下载下来的nginx压缩包解压到一个目录下,解压后该软件就可以启动使用了 

启动方式1:双击解压目录下的nginx.exe文件即可运行nginx;

启动方式2:进入dos窗口,切换到nginx主目录下,在dos窗口执行命令:start nginx

关闭方式1:在资源管理器杀掉Nginx进程(有两个进程)

关闭方式2:在dos窗口切换到Nginx安装主目录下执行命令:nginx -s stop

九、配置文件

学习Nginx首先需要对它的核心配置文件有一定的认识,这个文件位于Nginx的安装目录/usr/local/nginx/conf目录下,名字为nginx.conf

cd /usr/local/nginx/conf

十、静态网站部署

Nginx是一个HTTP的web服务器,可以将服务器上的静态文件(如HTML、CSS、JS、图片等)通过HTTP协议返回给浏览器客户端,找一个简单的web项目上传到linux服务器/opt/static目录下,将名字改为ace

 修改nginx.conf配置文件

 cd /usr/local/nginx/conf/

 为了避免后续使用寻找不到原来的配置,将复制一份nginx.conf配置文件

修改配置的访问路径: 

vim 1.static-resource-web.conf

或者使用这个也行: 

  

 随后便通过指定的配置文件(1.static-resource-web.conf)来启动Nginx(检查配置文件和启动)

 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/1.static-resource-web.conf -t/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/1.static-resource-web.conf

最后在外部浏览器即可访问:

 十一、负载均衡

在网站创立初期,我们一般都使用单台机器对外提供集中式服务。随着业务量的增大,我们一台服务器不够用,此时就会把多台机器组成一个集群对外提供服务,但是,我们网站对外提供的访问入口通常只有一个,比如 www.web.com。那么当用户在浏览器输入www.web.com进行访问的时候,如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡要做的事情。

负载均衡通常是指将请求"均匀"分摊到集群中多个服务器节点上执行,这里的均匀是指在一个比较大的统计范围内是基本均匀的,并不是完全均匀。

硬件负载均衡

        比如 F5、深信服、Array 等

        优点是有厂商专业的技术服务团队提供支持,性能稳定

        缺点是费用昂贵,对于规模较小的网络应用成本太高

软件负载均衡

        比如 Nginx、LVS、HAProxy 等

        优点是免费开源,成本低廉

Nginx负载均衡

        Nginx通过在nginx.conf文件进行配置即可实现负载均衡。

配置如下:(配置2步即可)

第一步:在http模块加上upstream配置

upstream www.myweb.com {server  127.0.0.1:9100 weight=3;server  127.0.0.1:9200 weight=1;  
}

其中weight=1表示权重,用于后端服务器性能不均的情况,访问比率约等于权重之比,权重越大访问机会越多

upstream是配置nginx与后端服务器负载均衡非常重要的一个模块,并且它还能对后端的服务器的健康状态进行检查,若后端服务器中的一台发生故障,则前端的请求不会转发到该故障的机器

第二步:在server模块里添加location,并配置proxy_pass

location /myweb {proxy_pass http://www.myweb.com;
}

其中 www.myweb.com 字符串要和 upstream 后面的字符串相等

十二、动静分离

Nginx的负载均衡和静态代理结合在一起,我们可以实现动静分离,这是实际应用中常见的一种场景。

动态资源,如jsp由tomcat或其他web服务器完成

静态资源,如图片、css、js等由nginx服务器完成

它们各司其职,专注于做自己擅长的事情

动静分离充分利用了它们各自的优势,从而达到更高效合理的架构

整个架构中,一个nginx负责负载均衡,两个nginx负责静态代理。Nginx在一台Linux上安装一份,可以启动多个Nginx,每个Nginx的配置文件不一样即可。

十三、映射域名

先修改nginx.conf配置文件

然后进入Windows系统的下面目录文件中,添加ip与域名的映射,随后便可在浏览器访问了

 

 


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

相关文章

什么是反向代理?

正向代理 当客户端访问一台服务器有障碍,访问不到的时候,这时候就可以找一台可以访问到该服务器的另外一台服务器去代替他去访问,这台代替他去访问的服务器称之为代理服务器。然后客户端就可以把请求发送给代理服务器,然后通过代…

服务器反向代理

一、定义 正向代理 正向代理,代理的是客户端,为客户端发送请求,对服务器隐藏自己的真实客户端。 由下图可见,通过代理服务器,可以访问局域网外的服务器,突破自身ip的访问权限。比如翻墙访问外网。 一般而言…

什么是反向代理(代理服务器解释

什么是反向代理(reverse proxy)? A reverse proxy protects web servers from attacks and can provide performance and reliability benefits. Learn more about forward and reverse proxies. 反向代理是位于 Web 服务器前面的服务器,将客户端&…

反向代理服务器

反向代理服务器的概念 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址&#xff0…

超全Nginx反向代理服务器原理+实战篇

文章目录 1.Nginx简介和安装部署1.1.什么是Nginx1.2.Nginx的用途1.3.正向代理服务器1.4.反向代理服务器1.5.nginx安装部署1.6.线上访问服务器应用流程解析1.7.本地虚拟机配置宿主机域名映射2.Nginx核心基础知识2.1.Nginx目录结构2.2.Nginx核心配置文件2.3.Nginx搭建前端静态服务…

什么是反向代理服务器

我们常会看到‘反向代理服务器’这个名词,例如常看到文章上说 nginx 是一个反向代理服务器、varnish 是一个反向代理服务器 …… 下面就了解下这个概念 含义 ‘反向代理服务器’ 有两个概念,一是‘代理服务器’,二是‘反向’ ‘代理服务器’比…

入门Nginx反向代理服务器

前言 博主最近学习了Nginx,故想通过撰写博客的方式加强对知识的认识和记忆,所涉及知识浅薄,如有错误,敬请指正 一.Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器;其特点是占有内存少&#xff0…

推导大O阶方法

1、用常数1取代运行时间中的所有加法常数; 2、只保留最高阶项; 3、去除最高阶项的常数; 常数阶是O(1); 线性阶是O(n); 对数阶是O(logn); 平方阶是O&…

大O算法复杂度表示

序言:算法的时间复杂度和空间复杂度都是用“ 大O表示法” 来表示的。其中O是个常量。 常见的 排序算法的时间复杂度: 冒泡排序、插入排序、希尔排序、选择排序的时间复杂度是O(n^2); 快速排序的时间复杂度是 O&#…

数据结构学习笔记:算法复杂度的度量之“大O记号”

分析算法复杂度的非常重要的方法:大O记号!! 下面来让我们看一下到底什么是大O记号 举个例子: 用一个直尺去评价算法复杂度,上面的刻度就相当于大O记号,我们不一定要一味的强调刻度的精细程度,没…

算法复杂度渐进符号(大O、Ω和θ)的个人理解

做软考习题时,碰到了这样的一道题: 关于算法复杂度渐进符号(O、Ω、θ),详细解释可参考: 【双语字幕】什么是算法复杂度渐进符号?阿布老师算法课11 这里节选总结了视频的重点内容,…

数据结构考研:大O表示法最浅显易懂且详细深入的解释及与小o表示法的区别(十分钟必懂)

大O表示法的背景 作为软件工程专业的学生,在我们学习数据结构的时候,总是会碰见对各种算法时间复杂度和空间复杂度的大O表示法的描述。我们只是将信将疑的用着,并不知道大O表示法的准确含义,今天博主李同学在查阅各方资料后进行详…

算法的时间复杂度(大O表示法)

首先我们先来看个例子, 我想找个1~100的数字,你的目标是以最少的次数猜到这个数字。你每次猜测后,我会说小了、大了或对了。下面我们来看下两种简单的方法(方法有很多种),再来引入算法的运行时间&#xff0…

算法时间复杂度分析——大O、大Ω、大θ、小o,小ω

最近开始转战传统算法分析的研究工作了,重新拾起以前学过的一些内容。 目录 一、概述 二、对常见的Ο和Ω进行分析 2.1 大O表示法 2.2 大Ω表示法 三、P问题,NP问题,NP-hard问题,NPC问题 3.1 P问题和NP问题 3.2 NPC问题和N…

复杂度分析(大O表示法)

复杂度分析 前文提要 本文完完全全引用极客时间的文章《数据结构与算法之美》,作者王争。 数据结构是作为程序猿绕不过的一道坎,所以萌生了学习的想法,试读了几篇文章后发现讲的很好,也有很多人订阅,于是不回头的走…

big O notation - 大 O 表示法

big O notation - 大 O 表示法 Big O notation (with a capital letter O, not a zero), also called Landau’s symbol. 大 O 表示法 (大写字母 O,不为零),也称为 Landau’s symbol。 Big O notation is a mathematical notation that describes the l…

算法分析:大O符号/大Ω符号/大Θ符号/小o符号/小w符号

感谢作者分享,原文链接:http://blog.csdn.net/u012816041/article/details/49888631 大O,渐进表示法,接下来我尝试用最简单的方式进行说明。 学习算法我经常听到这个词汇,我一开始很难理解,什么鬼&#xff…

算法分析—大O、大Ω、大θ

前言 在算法的学习中,最开始便是要学习算法的分析。学习算法分析时,我们便会接触到这么几个符号:大O、大Ω、大θ,常常让人难以理解。 在通常的算法分析时,我们可以明白,在输入规模较小,各种算…

算法分析——大O标记法

目录 一. 运行时间 二. 大O 表示法 2.1 示例 三. 总结 五. 扩展 一. 运行时间 每次介绍算法时,我们都将讨论其运行时间。一般而言,应选择效率最高的算法,以最大限度地减少运行时间或占用空间。 可是,如果代码都还没有运行&a…

Oracle数据库查询语句

1 oracle数据库查询表的所有数据–select * from 表名;(* 代表所有) 2 oracle数据库查询表中指定字段的值–select 字段名1,字段名2,……from 表名; 3 oracle数据库往表中添加数据信息–(添加信息使用inser…