Nginx超简单教程,入门看这篇就够了
发布时间 - 2023-07-26 00:00:00 点击率:次一 Nginx简介
1.1 什么是Nginx
Nginx是一个高性能的http和反向代理服务器,其特点是占用内存小,并发能力强。Nginx专为性能优化而开发,性能是其最重要的考量,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。
1.2 反向代理
正向代理:在浏览器中配置代理服务器,通过代理服务器进行互联网访问。
反向代理:将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴漏的是代理服务器地址。
1.3 负载均衡
如果请求数过大,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器的情况改为请求分发到多个服务器上,就是负载均衡。
1.4 动静分离
为了加快服务器的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。
二 Nginx的安装
Nginx需要几个依赖包,分别是pcre,openssl,zlib,在安装nginx之前需要先安装这几个依赖。
2.1 安装pcre依赖
使用命令下载
pcre压缩包
1wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
解压压缩文件
1tar -xvf pcre-8.37.tar.gz
进入解压后的名录,执行以下命令
1./configure
使用以下命令进行编译安装
1make && make install
查看安装的
pcre版本号
1pcre-config --version
2.2 安装openssl,zlib等依赖
1yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2.3 安装nginx
nginx官网下载nginx,官网地址:https://nginx.org/download/;将压缩包拖到服务器上;
使用命令
tar -xvf nginx-1.12.2.tar.gz解压压缩包;使用命令
./configure检查;使用命令
make && make isntall编译安装;
安装成功后,在usr会多出来一个文件夹,local/nginx,在nginx的sbin文件夹下有启动脚本。
2.4 启动nginx
在/usr/local/nginx/sbin文件夹下,使用以下命令启动
1./nginx
然后浏览器访问服务器ip,nginx默认端口是80,出现以下页面则证明nginx安装成功;
2.5 Nginx常用的命令
使用这些命令时需要进入/usr/local/nginx/sbin文件夹
查看
nginx的版本号
1./nginx -v
启动
nginx
1./nginx
关闭
nginx
1./nginx -s stop
重新加载
nginx
1./nginx -s reload
2.6 Nginx的配置文件
nginx的配置文件在/usr/local/nginx/conf中的nginx.conf。我们将nginx.conf中注释的内容删除一下。
1#user nobody;
2worker_processes 1;
3
4#pid logs/nginx.pid;
5
6events {
7 worker_connections 1024;
8}
9
10http {
11 include mime.types;
12 default_type application/octet-stream;
13
14 sendfile on;
15 #tcp_nopush on;
16
17 #keepalive_timeout 0;
18 keepalive_timeout 65;
19
20 #gzip on;
21
22 server {
23 listen 80;
24 server_name localhost;
25
26 location / {
27 root html;
28 index index.html index.htm;
29 }
30 }
31}nginx的配置文件包含三部门。
1.全局块
从配置文件开始到events块之间的内容,主要会设置一些nginx服务器整体运行的配置指令。
1worker_processes 1;
这个代表nginx处理并发的关键配置,值越大,处理并发能力越强。但是会受到硬件、软件等约束。
2.events块
events块涉及的指令主要影响nginx服务器与用户网络的连接。
1worker_connections 1024;
这个代表nginx支持的最大连接数。
3.http全局块
nginx服务器配置最频繁的部分。http全局块包含http块和server块。
三 Nginx配置反向代理
3.1 ngix代理流程
本地浏览器访问nginx服务器,nginx服务器反向代理tomcat服务器,当我们请求nginx的时候直接访问到tomcat。tomcat的安装这里就不在讲了,我将tomcat和nginx安装在了同一台服务器上。
3.2 配置ip和域名的绑定关系
由于我们的nginx没有域名,为了演示,因此我们在本地host文件中配置nginx服务器ip和域名进行绑定。这个host文件的具体位置在C:\Windows\System32\drivers\etc。在host文件中增加一句配置:
147.104.xxx.xxx www.javatrip.com
前面的ip是服务器的ip地址,后面的域名是我随便起的用于绑定这个ip的一个域名。配置好之后,我们使用域名访问一下tomcat,如果能请求到tomcat默认页面,则配置成功。
3.3 在nginx配置请求转发
1 server {
2 listen 80;
3 server_name localhost;
4
5 location / {
6 root html;
7 index index.html index.htm;
8 }
9 }我们将以上默认的配置文件做个修改:
1server {
2 listen 80;
3 server_name 47.104.xxx.xxx;
4
5 location / {
6 root html;
7 proxy_pass http://127.0.0.1:8080;
8 index index.html index.htm;
9 }
10}以上这段配置的意思就是请求是47.104.xxx.xxx:80,都会转发至47.104.xxx.xxx:8080。
现在浏览器访问www.javatrip.com,发现直接转发到了tomcat上了,这样简单的反向代理就完成了。
3.4 根据请求后缀分发
我们再解压一个tomcat,端口号设置为8081,分别在两个tomcat下webapps目录下面新建dev和prod目录,然后在该目录下写一个文件。
将请求www.javatrip.com:7001/dev转发到tomcat8080,将请求www.javatrip.com:7001/prod转发到tomcat8081。现在我们的nginx监听的端口号是7001。打开nginx的配置文件,新建一个server如下:
1server {
2 listen 7001;
3 server_name 47.104.xxx.xxx;
4
5 location ~ /dev/ {
6 proxy_pass http://127.0.0.1:8080;
7 }
8
9 location ~ /prod/ {
10 proxy_pass http://127.0.0.1:8081;
11 }
12}然后试试效果,分别访问www.javatrip.com:7001/dev/a.html和www.javatrip.com:7001/prod/a.html,效果如下:
其中,配置转发的时候用到了~,其含义内容如下:
= 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。
~ 为区分大小写匹配(可用正则表达式)
!~为区分大小写不匹配
~* 为不区分大小写匹配(可用正则表达式)
!~*为不区分大小写不匹配
^~ 如果把这个前缀用于一个常规字符串,那么告诉
nginx如果路径匹配那么不测试正则表达式。
四 Nginx配置负载均衡
4.1 什么是负载均衡
负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。
现在我们想实现的效果是通过访问www.javatrip.com:7001/prod/a.html,将请求分别分发到两个tomcat上面去,首先我们在tomcat8080上新建一个prod的文件夹,里面放一个a.html的文件。这样tomcat8081和tomcat8080两个上就都有了一个prod的文件加且里面有一个a.html的文件。
4.2 配置nginx.conf
首先,在http块中配置两个tomcat的服务列表
1upstream myserver{
2 server 127.0.0.1:8080;
3 server 127.0.0.1:8081;
4}其次,在server块中配置规则:
1server {
2 listen 80;
3 server_name 47.104.xxx.xxx;
4
5 location / {
6 root html;
7 proxy_pass http://myserver;
8 index index.html index.htm;
9 }
10}4.3 测试效果
访问地址:www.javatrip.com:7001/prod/a.html,多刷新几次。发现有的请求到tomcat8080上,有的请求到tomcat8081上。
4.4 nginx支持的几种负载策略
轮询(默认):每个请求按时间顺序逐一分配到不同的服务器,如果服务器down了,会自动剔除。
1upstream myserver{ 2 server 127.0.0.1:8080; 3 server 127.0.0.1:8081; 4}
weight(权重):默认为1,权重越高,分配的请求越多。
1upstream myserver{
2 server 127.0.0.1:8080 weight=1;
3 server 127.0.0.1:8081 weight=2;
4}ip hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后台服务器,可以解决
session的问题。
1upstream myserver{
2 ip_hash;
3 server 127.0.0.1:8080;
4 server 127.0.0.1:8081;
5}fair(第三方):按后端响应时间进行分配,响应时间越短分配的请求越多。
1upstream myserver{
2 server 127.0.0.1:8080;
3 server 127.0.0.1:8081;
4 fair;
5}由于动静分离在实际开发中也不常用,就不再写了。本篇文章做为一个nginx入门,到这里就基本完结了。最后留给大家一个问题思考一下:如何保证nginx的高可用?
# nginx
# 代理服务器
# 配置文件
# 负载均衡
# 压缩包
# 器上
# 绑定
# 多个
# 越多
# 高性能
# 单点
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何用AI帮你把自己的生活经历写成一个有趣的故事?
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
零服务器AI建站解决方案:快速部署与云端平台低成本实践
canvas 画布在主流浏览器中的尺寸限制详细介绍
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
英语简历制作免费网站推荐,如何将简历翻译成英文?
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
怎么用AI帮你为初创公司进行市场定位分析?
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
公司网站制作价格怎么算,公司办个官网需要多少钱?
Python数据仓库与ETL构建实战_Airflow调度流程详解
如何在阿里云虚拟服务器快速搭建网站?
JS去除重复并统计数量的实现方法
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
WEB开发之注册页面验证码倒计时代码的实现
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
制作公司内部网站有哪些,内网如何建网站?
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
微信小程序 scroll-view组件实现列表页实例代码
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Laravel怎么使用Intervention Image库处理图片上传和缩放
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
如何在万网利用已有域名快速建站?
如何在搬瓦工VPS快速搭建网站?
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
WordPress 子目录安装中正确处理脚本路径的完整指南
PHP 500报错的快速解决方法
PythonWeb开发入门教程_Flask快速构建Web应用
Bootstrap CSS布局之列表
如何在腾讯云服务器上快速搭建个人网站?
轻松掌握MySQL函数中的last_insert_id()
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
在线教育网站制作平台,山西立德教育官网?
电商网站制作价格怎么算,网上拍卖流程以及规则?
中山网站制作网页,中山新生登记系统登记流程?
如何在万网自助建站平台快速创建网站?
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
EditPlus中的正则表达式 实战(1)
,在苏州找工作,上哪个网站比较好?


r{
2 server 127.0.0.1:8080;
3 server 127.0.0.1:8081;
4}