前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

Nginx

作者头像
晚上没宵夜
发布2022-05-09 21:08:15
4000
发布2022-05-09 21:08:15
举报

继上一篇跨域博客,这次来介绍Nginx,使用Nginx也可以解决跨域问题,现在流行的VUE前端框架就常搭配Nginx食用

1. 简介

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占用内存少,支持热部署,并发能力强,专为高并发而优化,事实上Nginx的并发能力在同类型的网页服务器中表现最好(来自百度百科)

看了那么多官方介绍,总结一句话就是:Nginx是一个高性能的服务器(和Tomcat类似)

在学习一项新技术之前,我们要先知道为什么去学他?他有什么作用? 笔者学习Nginx是为了解决跨域问题,然后在学习的过程中扩展认识其他的功能,这样才有积极的意义。那么Nginx到底有什么作用呢?

其作用有:反向代理负载均衡动静分离高可用

这些专业名词在后面会一一说明,现在让心里有个底,看完之后就会豁然开朗的

2. 下载和安装

使用Nginx当然免不了下载和安装,其分为Windows和Linux版,笔者在本地测试没有用到服务器,所以就以Windows版为例

第一步下载:

进入 Nginx官网,然后点击右下角的 Download,下载目前(2020-2-20)最新的稳定Windows版

第二步安装:

解压下载的文件到想要安装的目录即可,没错解压即可用(绿色免装版),而且大小只有1.62MB(轻量型服务器),但不能因为其大小而小觑性能,业界如百度、京东、腾讯、网易、淘宝等都有使用Nginx

3. 目录与启动

学习之前来了解一下Nginx的目录结构与启动方式,不然学完之后连软件都不知道怎么打开

目录结构

打开Nginx安装目录之后就会有以上的文件夹及文件,其分别是:配置文件、核心模块、说明文档、默认页面、日志文件、临时目录以及启动图标

启动

双击上图的nginx.exe,然后有控制台一闪而过就表示启动了,打开浏览器输入localhost回车就会有以下熟悉的欢迎页

守护进程

即是一类在后台运行的特殊进程,用于执行特定的系统任务

4. 常见命令

和普通软件不一样,Nginx在windows也是需要使用命令行的

代码语言:javascript
复制
start nginx			启动nginx
nginx -s stop		快速关闭,不保存相关信息
nginx -s quit		平稳关闭,保存相关信息
nginx -s reload		重新加载配置文件
nginx -c filename	指定配置文件

windows下需要加上前缀 eg:./nginx.exe -s stop

5. 配置文件

config文件夹中nginx.conf配置文件分为三块:

第一块:从开头到event块之间,主要设置影响nginx服务器整体运行的配置

第二块:设置服务器与用户的网络连接

第三块:代理、缓存、日志和第三方模块都在这里(里面又有个server块)

代码语言:javascript
复制
# 全局块
worker_processes  1;

# event块
events {
   XXXXX
}

# http块
http {
	XXXXX
	
	# server块
    server {
		XXX
    }
}

6. 反向代理

要说明反向代理就少不了正向代理,正向代理隐藏真实客户端,反向代理隐藏真实服务端。举个例子:

正向代理:学校食堂有意见箱,我们(客户端)可以往里面投递自己的意见,食堂的工作人员就可以在意见箱里面获取意见,意见箱作为代理,让食堂工作人员(服务器)不知道是哪位同学投递的请求(隐藏真实客户端)

反向代理:我们(客户端)闲下来了去吃云吞面,只需跟服务员说要一份云吞面即可,我们作为客户端是不知道哪位厨师(服务器)为我们准备的,而是通过请求服务员(代理)实现沟通厨师(服务器)的功能(隐藏了真实后台)


我们要实现客户端访问nginx(127.0.0.1:80)就被代理到Tomcat(127.0.0.1:8080)的功能,即访问127.0.0.1:80就是访问127.0.0.1:8080,这里实现了跨域功能。

第一步:在nginx.conf的http块里的server块中的localtion添加一个配置

代码语言:javascript
复制
location / {
	proxy_pass   http://127.0.0.1:8080;  #代理的意思
}

第二步:开启Tomcat,并写下一些html页面,使其访问的时候显示访问的端口号

第三步:测试访问(地址栏若是80端口即会省略),实现了转发

7. 负载均衡

在服务器集群中(即多台服务器),将原先集中请求单台服务器转化为将请求分发到多台服务器上,从而实现均衡服务器的负荷(负载均衡)的功能


在浏览器输入127.0.0.1:80实现把请求均衡到服务器集群上,这里开三台Tomcat服务器,只是端口号不同(8080,8081,8082)

第一步:

在nginx.conf的http块中添加一个配置

代码语言:javascript
复制
#集群操作,在http节点中间,不要用localhost-慢
upstream tomcatCluster {
	server 127.0.0.1:8080 weight=1;
	server 127.0.0.1:8081 weight=1;
	server 127.0.0.1:8082 weight=1;
}

在在nginx.conf的server块中添加一个配置

代码语言:javascript
复制
location / {
	proxy_pass   http://tomcatCluster;
}

第二步:开启Tomcat,并写下一些html页面,使其访问的时候显示各自访问的端口号

第三步:测试访问(首先要重载配置nginx.exe -s reload

负载均衡默认是轮询(某个服务器down掉会自动剔除),可以设置权重、ip_hash、第三方

8. 动静分离

为了加快网站的解析速度,可以把动态页面和静态页面交由不同的服务器来解析。专业的功能让专业的软件来实现,Nginx处理静态文件极佳,可以让静态文件交由Nginx来处理,不用Tomcat服务器来处理从而不损耗其性能又提高了网站的解析速度,也就是CDN处理

第一步:

在nginx.conf的http块中添加配置

代码语言:javascript
复制
#8081、8082处理动态资源
upstream tomcatCluster {
	server 127.0.0.1:8081 weight=1;
	server 127.0.0.1:8082 weight=1;
}

在server中添加配置

代码语言:javascript
复制
# 静态资源代理到8080端口
location ~ \.(html|js|css|images|png|gif)$ {
	proxy_pass   http://127.0.0.1:8080;
}
	
# 动资源代理到集群服务器上(8081、8082)
location / {
	proxy_pass   http://tomcatCluster;
}

第二步:启动各个服务器

第三步:测试

9. Session

集群中Session可以在不同服务器上,解决常见的解决方法是Session共享,即用redis存储Session,集群的服务器向redis获取Session

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简介
  • 2. 下载和安装
    • 第一步下载:
      • 第二步安装:
      • 3. 目录与启动
        • 目录结构
          • 启动
            • 守护进程
            • 4. 常见命令
            • 5. 配置文件
            • 6. 反向代理
            • 7. 负载均衡
            • 8. 动静分离
            • 9. Session
            相关产品与服务
            负载均衡
            负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档