当前位置:首页 > 技术文章 > 正文内容

一文详解Nginx服务器配置,反向代理和负载均衡

arlanguage3个月前 (01-31)技术文章28

什么是Nginx?

Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发的高性能的Web反向代理服务器,也是一个 IMAP/POP3/SMTP代理服务器。

由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。

Nginx安装

Ubuntu20.04为例:

sudo apt update
sudo apt install nginx

安装完成,检查版本号,如果版本号正确显示,则安装成功:

nginx -v

Nginx基础命令和配置

基础命令:

sudo service nginx status
sudo service nginx stop
sudo service nginx start
sudo service nginx restart
sudo nginx -t             检查默认配置文件
sudo nginx -s reload      重新载入配置文件

Nginx日志目录:/var/log/nginx/

Nginx工作目录:/etc/nginx

Nginx全局配置文件:nginx.conf

我们在conf.d目录下,新建.conf文件,写入自己的nginx配置。

查看进程号:

一个进程允许处理的最大连接数:worker_connections 768;

返回静态页面

先在全局配置文件http段中加入server段:

然后执行:sudo nginx -t 测试是否成功。如果成功,执行sudo nginx -s reload重新载入配置文件。

默认80端口,访问成功:

注意:非root用户修改全局配置文件先要执行chmod增添写入权限。

然而,一般我们不会直接修改默认配置文件,在conf.d目录下新建配置文件:

server {
    listen 192.168.92.134:8001;
    location / {
        root /etc/nginx/conf.d/html;
        index index.html;
    }
}

return 302 重定向到其他网站:

使用302重定向,访问本地网址,跳转后,地址栏显示的还是跳转后的地址。比如,我更换了网站域名,但是希望老用户可以继续找得到新网站,所以做个跳转功能。

root 表示 location 匹配内容的相对路径,alias 表示 一个绝对路径,而且必须以"/"结尾:

反向代理

什么是代理服务器?举个例子,找工作直接和老板谈薪资待遇,这就是没有代理,但是大公司老板不会直接面试招聘,就通过HR进行代理,然后老板只负责盖章敲定。

真实客户端直接访问真实服务器就是没有代理。网络中,代理又分为正向代理和反向代理。

正向代理:比如我在大陆服务器要访问Google,但是无法直接访问,然而我可以访问香港服务器,香港服务器可以访问Google,那我就用香港服务器做代理,实现在大陆直接访问外网。

正向代理是隐藏客户端,反向代理是隐藏服务器。比如,张艺谋的《影》,讲的是关于替身的故事,替身即使被杀死,也不会影响真身。所以,真实服务器作为大Boss,让小弟服务器做代理,黑客只能共计小弟代理服务器,不会影响真实服务器。

如上图,大家只可以访问代理服务器,代理服务器再向真实服务器请求数据,同时真实服务器可以是多个,这就叫做负载均衡。

除了隐藏真实服务器,还有一个现实的需求,那就是一个服务器要开启多个服务,但是,一个服务器只有一个80端口,如何让多个服务共用80端口?

可以先给不同服务分配不同端口,比如8001,8002,但是都监听80端口。服务器名字用不同的域名区分,访问不同的域名,默认都是80端口,然而实际上访问的是真正的端口。

负载均衡

当访问量急剧增大,只有一台服务器难以应答,可以考虑使用多个服务器分散压力。比如,一个请求到达,按照服务器1,2,3的顺序依次应答,这样就可以减轻单个服务器的压力。

正常每个服务器的内容都是一样的,但是为了测试方便,使用不同的网页应答,这种默认的负载均衡方式就是面对请求,依次应答的,这种形式也叫做轮询算法。

然而,不同服务器可能性能不同,一般主服务器性能最佳,访问时应答权重更高一些,能力越大责任越大,这就可以使用加权轮询算法,给不同服务器分配应答权重。

ssl证书

SSL证书是一种数字证书,主要是给予网站HTTPS安全协议加密传输与信任的功能。ssl证书分为免费版和付费版,一般网站长期使用还是付费证书比较稳定,到期续费,平时使用可以搜索一下免费证书以供练习。

然后访问https就可以啦:

相关推荐

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1348.html

分享给朋友:

“一文详解Nginx服务器配置,反向代理和负载均衡” 的相关文章

NGINX 路由配置与参数详解(https配置、跨域配置、socket配置)

一、概述Nginx 是一个高性能的开源Web服务器,也可以用作反向代理服务器、负载均衡器和HTTP缓存。它的设计目标是提供高并发、低内存消耗和高度可伸缩性,使其成为处理大量并发连接的理想选择。NGINX 基础部分可以参考我这篇文章:NGINX - 高级负载均衡器、Web服务器、反向代理二、https...

Windows下配置Nginx开机自启动

如何安装、配置网站就不说了,文章主要讲讲windows中如何让nginx开机自启动1.windows中配置nginx开机启动需要借助Windows Service Wrapper工具。可以通过地址http://repo.jenkins-ci.org/releases/com/sun/winsw/wi...

基于一次ContentDownload变慢而进行的网站性能优化

平时运行无常的网站,突然出现了某个接口TTFB缓慢问题,于是乎开始定位和解决,先说明一下网站的技术栈: 编程语言:PHP、Javascript、Vue、Java 开发框架:Laravel、SpringBoot 中间件:Redis、Kafka、Nginx 数据库:Mysql、MongoDB 云服务:腾...

一起学习Kubernetes:容器和镜像

简述容器每个运行的容器都是可重复的;包含依赖环境在内的标准,意味着无论你在哪里运行它都会得到相同的行为。容器将应用程序从底层的主机设施中解耦。 这使得在不同的云或 OS 环境中部署更加容易。Kubernetes 集群中的每个节点都会运行容器,这些容器构成分配给该节点的 Pod。 单个 Pod 中的容...

好程序员:2023年自学Java四阶段学习法,真滴好用麻啦!

同学们,我是好程序员小源,今天给大家整理了自学Java的四个阶段,大家可以按照这四个阶段学习哦~会更加规划系统一点!第一阶段: JavaSE[5周]本阶段从零基础起步,荃面深入的学系JavaSE课程,主要内容包括Java概述与环境搭建、语言基础、条件、分支结构 、循环、方法/数、数组、面向对象基础、...

go 语言中的 Cobra 库,使用场景以及那些知名项目在用

go 语言中的 Cobra 库是什么?主要的使用场景有哪些?哪些知名的项目在用?Cobra 是一个库,提供了一个简单的接口来创建强大的现代命令行界面(CLI),类似于 git 和 Go tools。再简单点来说就是一个用来构建命令行应用程序的库。什么是命令行应用程序,最最常见的是 windows 下...