专栏首页wangweijunnginx快速入门
原创

nginx快速入门

简介

本篇文章我们来学习一下nginx,那么首先摆在我们面前的问题就是:何为nginx?nginx能做什么?

nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,特点是占有内存少,并发能力强。nginx可以作为静态页面的web服务器,同时还支持CGI协议的动态语言,如:perl、php等,但不支持java,java程序只能通过与tomcat配合完成。nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验。

相关概念

为了能够更深刻地认识到nginx,这里介绍其几个十分重要的概念:

  1. 反向代理
  2. 负载均衡
  3. 动静分离

反向代理

在了解反向代理之前,我们可以来看看何为正向代理。

如果把局域网外的Internet想象成一个巨大的资源库,局域网中的用户要想访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

举个很简单的例子,你现在想要访问google,然后你直接在浏览器的网址里输入www.google.com能访问到吗?我们知道,因为一些原因,在国内是访问不到google的,所以这个时候你通过代理服务器间接地访问到了google,这个过程称为正向代理。

那么何为反向代理呢?

在反向代理中,其实客户端对代理是无感的,因为客户端不需要任何配置就能可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的ip地址。

负载均衡

客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。

这种架构模式对于早期的系统相对单一、并发请求相对较少的情况下是比较适合的,成本也低,但是随着数据的逐渐增大,目前服务器已经无法应对高并发的情况,该怎么办呢?

最简单的办法当然就是升级服务器的配置,但这种方式成本太高,倘若服务器的配置已经到达顶峰,却仍然无法抗住巨大的并发请求,这个时候该如何解决呢?

回顾刚才的反向代理,客户端发送的请求会通过反向代理服务器,而反向代理服务器会去选择目标服务器,假设现在同时有30条请求,我们有三台服务器,那么负载均衡要做的事情就是将这30条请求平均分配到三台服务器中,使得每台服务器处理的请求趋近于10条。

动静分离

为了加快网站的解析速度,通常把动态页面和静态页面由不同的服务器来解析,以此加快解析速度,降低原来单个服务器的压力。

安装教程

概念说完了,该讲讲如何安装nginx了,这里以centos6环境为例。

先来到官网下载好nginx:http://nginx.org/

在这里插入图片描述

随便下载一个版本就好了,这里以nginx-1.19.0版本为例。

然后点击这里就开始下载了:

在这里插入图片描述

下载完成后把它放到一边,我们先下载nginx所需的依赖。

执行如下指令下载pcre:

wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz

下载完成后对其进行解压,执行指令:

tar -xvf pcre-8.37.tar.gz

解压完成后需要进入到该目录中:

cd pcre-8.37.tar.gz

接着执行指令对其进行编译和检查:

./configure

有些同学在进行编译检查的时候可能会遇到这个问题:

在这里插入图片描述

产生这个问题是因为缺少gcc编译器,安装一下就好了,执行如下指令安装:

yum install gcc-c++

最后执行安装指令:

make && make install

到这里pcre就安装好了,接着安装一下zlib,执行指令:

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

所有依赖安装完成,就可以开始安装nginx了,还记得我们前面下载好的nginx压缩包吗,通过连接软件将压缩包放到linux环境中,或者也可以通过指令直接下载:

wget https://nginx.org/download/nginx-1.19.1 tar.gz

下载好后解压一下:

tar -xvf nginx-1.19.1 tar.gz

然后进入解压目录,执行指令:

./configure

最后执行安装指令:

make && make install

在正式启动nginx之前,我们还需要设置一下防火墙,执行指令:

vi /etc/sysconfig/iptables

将文件修改为如下内容:

# Firewall configuration written by system-config-firewall 
# Manual customization of this file is not recommended. 
*filter 
:INPUT ACCEPT [0:0] 
:FORWARD ACCEPT [0:0] 
:OUTPUT ACCEPT [0:0] 
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 

-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT 

-A INPUT -j REJECT –reject-with icmp-host-prohibited 
-A FORWARD -j REJECT –reject-with icmp-host-prohibited 
COMMIT 

nginx的端口为80,所以我们让80端口开放即可,然后重启防火墙:

service iptables restart

此时我们来到nginx目录下的sbin:

cd /usr/local/nginx/sbin/

执行指令:

./nginx

nginx就启动了,如果遇到这个问题:

Nginx: error while loading shared libraries: libpcre.so.

只需执行这条指令即可:

ln -s /usr/local/lib/libpcre.so.1 /lib64/

成功启动后,我们查看一下linux环境的ip地址:

在这里插入图片描述

此时打开浏览器,在地址栏上输入192.168.124.7,访问成功。

在这里插入图片描述

nginx常用命令

使用nginx命令的前提是我们当前处在nginx目录中,即:/usr/local/nginx/sbin,下面介绍一些十分常用的nginx命令:

  • 查看版本
  • 启动nginx
  • 关闭nginx
  • 重新加载nginx

查看版本

./nginx -v

启动nginx

./nginx

关闭nginx

./nginx -s stop

重新加载nginx

./nginx -s reload

nginx配置实现

下面来具体实现一下nginx的配置,分为:

  1. 反向代理
  2. 负载均衡
  3. 动静分离

反向代理

在实现之前,先提出一个要求:打开浏览器,在地址栏输入www.test.com,跳转至tomcat主页面。

先来分析一下运行流程,我们在浏览器地址栏输入www.test.com之后,需要将本次请求交给nginx服务器,再由nginx服务器转向tomcat服务器,因为涉及到一个域名,所以还需要在windows系统下的hosts文件中进行配置。

首先对hosts文件进行配置,来到该目录下C:\Windows\System32\drivers\etc找到hosts文件,并做如下修改:

在这里插入图片描述

前面是ip地址,后面是域名,让二者做一个映射关系。

接下来就是在nginx中进行请求转发的配置,来到/usr/local/nginx/conf目录下,对nginx.conf文件进行修改:

在这里插入图片描述

修改完成后使用./nginx指令重新启动一下nginx,千万记得要在nginx的sbin目录下执行该指令。

最后我们测试一下,在浏览器地址栏输入www.test.com,访问成功。

在这里插入图片描述

负载均衡

下面来具体实现一下负载均衡的效果,先提出一个要求,在浏览器地址栏中输入http://192.168.124.7/test.html,将该请求分发至8080和8081端口中。

先进行准备工作,放置两个tomcat用于模拟两台服务器:

在这里插入图片描述

并对tomcat8081目录下的tomcat进行配置,将其配置成8081端口,最后分别在两个tomcat的webapps目录下存放一个html文件:

在这里插入图片描述
在这里插入图片描述

然后分别启动两个tomcat,这样准备工作就完成了,下面就要对nginx进行负载均衡的配置:

在这里插入图片描述

配置完成后重启nginx服务器。

到这里就完成了负载均衡的操作,但效果如何体现呢?看下面的演示:

在这里插入图片描述

因为nginx服务器监听的是80端口,所以我们可以省略端口号直接通过ip访问,会发现当不停地刷新页面进行请求的时候,页面有时会显示8080,有时会显示8081,这说明负载均衡已经成功实现了,nginx服务器每次都将请求平均分配给两个服务器进行处理才会出现这样的现象。

动静分离

动静分离说得通俗一点就是将所有静态请求交给nginx处理,将所有动态请求通过nginx再交给tomcat处理。

先做准备工作,在linux根目录下创建data文件夹,并在该文件夹下创建html和image文件夹,其中分别有一个test.html文件和test.png文件。

在这里插入图片描述

接下来就对nginx进行配置:

在这里插入图片描述

配置完成后同样重新启动一下nginx服务器,最后看运行效果:

在这里插入图片描述
在这里插入图片描述

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring中如何操作JDBC

    本篇文章介绍一下在Spring中如何使用JDBC,事实上,在Spring中使用JDBC和传统的JDBC或者一些JDBC框架,如:DBUtils的使用没有什么区别...

    wangweijun
  • 深入Java源码剖析之Set集合

    HashSet实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 ...

    wangweijun
  • 数据库操作中需要注意的问题

    如果你用cmd窗口向一张表插入数据的时候,插入的数据是中文,会出现错误提示,用软件操作的请忽略。。。 出现错误的原因是cmd窗口采用的是gbk编码,所以你在c...

    wangweijun
  • 详解Centos7中Nginx开机自启动的解决办法

    本篇文章主要介绍了详解Centos7中Nginx开机自启动的解决办法,具有一定的参加价值,有兴趣的可以了解一下。

    习惯说一说
  • Nginx学习日志(六)Linux下设置开机自启动

    最近升级了下linux服务器配置,重启之后,发现要敲一堆命令行,挺麻烦的,能开启自启动就好了

    海加尔金鹰
  • MAC下安装nginx的正确姿势 实践笔记

    cookily
  • Nginx系列:Nginx源码安装

    Nginx是使用C语言开发的,建议部署在Linux操作系统上,当然也可以安装在Windows操作系统安装Windows版本的Nginx,本文演示在...

    java乐园
  • nginx入门学习——编译安装 原

    Nginx是一款高性能的Web服务器、邮件服务器和反向代理服务器,由俄罗斯人Igor Sysoev(伊戈尔·赛索耶夫)开发的。

    阿dai学长
  • nginx(安装)

    官网: http://nginx.org/ 官方文档: http://nginx.org/en/docs/

    lpe234
  • [docker]Nginx安装部署

    4.在浏览器访问ip:8081端口则可以成功访问Nginx的欢迎界面 5.开始部署Nginx,先创建文件夹用来存放对应的文件

    贰叁壹小窝

扫码关注云+社区

领取腾讯云代金券