玩转nginx

本文内容包括:

  • nginx配置实例之反向代理;
  • nginx配置实例之动静分离;
  • nginx配置实例之负载均衡;
  • nginx配置实例之高可用;
  • nginx原理分析。

一、nginx基本概念

1、nginx是什么: nginx是一个高性能的服务器,占用内存少,并发能力强。

2、反向代理:

  • 正向代理:众所周知,我们不能直接访问谷歌,因为有墙,要访问我们就需要正向代理。在我们浏览器端需要配置正向代理服务器,然后让代理服务器帮我们去访问谷歌,谷歌把内容返回给代理服务器,代理服务器再把内容返回到我们浏览器。
  • 反向代理:通常我们自己撸代码都是发布到tomcat上,然后直接在浏览器访问tomcat,这个过程是没有代理的。反向代理就是不直接访问tomcat,而是在浏览器上访问一个代理服务器,代理服务器再决定将请求转发给哪一个tomcat。对外而言,客户端根本不知道自己访问的是代理服务器。

其实正向代理和反向代理就是代理的对象不同,正向是代理客户端,反向是代理服务端。

3、负载均衡: 说负载均衡前先说说我们自己撸的代码发布到tomcat然后通过浏览器访问是怎么样的一个过程。我们通过客户端请求服务端,服务端跟数据库交互,将数据返回服务端,服务端最后响应客户端。这种方式适合系统业务复杂度较低,请求量不大的情况。如果并发请求特别多,服务器是顶不住的,就会由于服务器性能瓶颈出现问题。解决办法就是一只汤姆猫拉不动了就多叫几只猫。

负载均衡示意图

4、动静分离: 静态资源是固定的不变的,比如js、css、jpg等,动态资源就是要与数据库交互的,比如servlet、jsp之类的。未做动静分离的时候,不管是动态资源还是静态资源,我们都放到同一只汤姆猫上,这样它负担也挺大的;做了动静分离,就是把动态资源放到汤姆猫上,静态资源放到另外一台服务器上,然后客户端请求通过nginx,由nginx来决定是访问动态服务器还是静态服务器,这样就降低了单台服务器的压力。

二、nginx安装以及常用命令和配置文件

1、安装nginx:

  • 首先进入官网下载nginx。https://nginx.org/
  • 安装需要的编译工具,包括pcre-devel、openssl-devel、gcczlib-devel。用 yum install make安装即可。
  • 将nginx上传到Linux中,解压,然后进入到解压缩目录,执行./configure,出现下图才表示configure成功了。

configure成功

  • 完事儿后再执行 make&&make install,如下图所示则安装成功了。安装完后在/usr/local目录中,会有一个nginx目录,启动脚本在nginx/sbin中。

安装成功

  • 进入到/usr/local/nginx/sbin目录中,执行./nginx,就启动了nginx,浏览器访问你Linux机器的ip,出现下图就表示启动成功。如果访问不了,注意防火墙是否开放了80端口。

nginx启动成功

2、nginx常用命令: 以下列举的命令都是在/usr/local/nginx/sbin下执行的。

  • ./nginx:启动nginx
  • ./nginx -s stop:快速关闭nginx,可能不保存相关信息
  • ./nginx -s quit:平稳关闭nginx,保存相关信息
  • ./nginx -s reload:重新加载配置文件
  • ./nginx -s reopen:重新打开日志文件
  • ./nginx -c filename:为nginx指定一个配置文件
  • ./nginx -t:检查配置文件的配置是否有语法错误
  • ./nginx -v:查看nginx的版本
  • ./nginx -V:查看版本以及配置参数等

3、nginx的配置文件: 配置文件的位置:/usr/local/nginx/conf下的nginx.conf。配置文件分为三部分,全局块、events块和http块。

配置文件

  • 从配置文件开始到events之间的叫全局块,配置全局的一些指令。worker_processes 1表示nginx处理的并发数量,值越大,能处理的并发量就越多。
  • events块主要是影响nginx服务器与用户的网络连接。worker_connections 1024表示支持的最大连接数。
  • http块是配置最频繁的部分,又包括http全局块和server块。http全局块可配置的指令包括文件引入、mime-type定义、日志自定义、连接超时时间和单链接请求数上限等;server块是最主要的配置部分,配置一些和主机相关的东西。

三、nginx实现反向代理

1、最终效果: 在浏览器上输入www.xixihaha.com,跳转到tomcat的主页面(所以要先安装一个tomcat并启动;或者也可以搞个springboot项目丢上去启动)。因为用到了域名,所以要在windows的host文件中配置域名与虚拟机ip的映射(域名的工作原理就是先看host文件中有没有映射,没有就通过DNS服务器去解析域名)。

2、进行配置: 首先将server_name改成虚拟机的IP,然后在location那里设置代理的域名和端口,这样就搞定了。

配置反向代理

3、代理多个端口: 上面是将www.xixihaha.com的请求转发到8080端口了,现在像将www.xixihaha.com/xi的请求转发到8081端口,www.xixihaha.com/ha的请求转发到8082端口。

  • 首先在8081端口tomcat的webapp目录下新建一阁文件夹名字为"xi",文件夹里面放一个xi.html;然后在8082端口omcat的webapp目录下新建一个ha文件夹,在文件夹里面放一个ha.html。分别启动这两个tomcat。
  • 然后在server块里面进行如下的配置:
server {
        listen       80;
        server_name  www.xixihaha.com;
        location ~ /xi/ {
            proxy_pass http://127.0.0.1:8081;
        }
        location ~ /ha/ {
            proxy_pass http://127.0.0.1:8082;
        }
    }

注意一个配置文件里可以写多个server,这个server和刚才配置的转发到tomcat欢迎页的可以同时存在。这个server配置location的时候用的类似于正则表达式,~ /xi/就表示路径中有xi的就转发到8081端口。

~   包含该字符串就匹配,区分大小写
~*  包含该字符串就匹配,不区分大小写
=   完全相同才匹配
^~  匹配不包含正则的且匹配度最高的location
  • 最终效果图:

反向代理

四、nginx实现负载均衡

1、准备工作: 上面说了负载均衡就是将多个请求分配给不同的服务器,减轻单一服务器的压力。现在我们先在8081和8082的tomcat的webapp目录下新建一个文件夹test,里面都放一个index.html(实际上这两个index.html是完全一样的,就是代表我们需要做负载均衡的项目,这里为了等下可以更好的看到效果,这两个html可以做一些标记,比如8081的就标记一下8081)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • nginx+vsftp搭建图片服务器前言:简介:nginx的安装:vsftp的安装:配置nginx为图片服务器:总结:

    贪挽懒月
  • linux常用命令linux目录结构:常用命令:

    贪挽懒月
  • 动态规划算法(01背包问题)

    动态规划算法和分治算法类似,也是将待求解问题分成若干个小问题一步步求解,不同的是,每一个小问题求解过程依赖于上一个小问题的解。动态规划问题可以通过填表法来得到解...

    贪挽懒月
  • linux服务器nginx的卸载和安装

    刚接触的linux服务器上,nginx配置乱的有点令人发指,就把老的卸载了重新装一下。

    Java架构师历程
  • 安装和搭建基于netcore的demo

    系统CentOS安装:   网上很多教程,很详细,我就不再赘述了。在安装过程中,需要注意的是设置时区、个人账户密码、root密码(一定要注意,否则后续很麻烦)、...

    逸鹏
  • windows下nginx的安装及使用方法入门

    nginx功能之一可以启动一个本地服务器,通过配置server_name和root目录等来访问目标文件 一. 下载 http://nginx.org/ 下载后解...

    smy
  • 新手windows安装nginx

    windows安装nginx,下载地址:http://nginx.org/download/ 下载的时候,下载 .zip 后缀的压缩包,因为 .zip 的压缩包...

    蓓蕾心晴
  • 在CentOS 7上安装Nginx服务器

    下面我就我在CentOS上安装Nginx经验做简单的记录,以备后查。 1、下载nginx-release包 以CentOS 7为例,下载nginx软件包:htt...

    庞小明
  • [CentOS 7] 安装nginx

    下载对应当前系统版本的nginx包(package) # wget  http://nginx.org/packages/centos/7/noarch/RP...

    庞小明
  • nginx配置默认首页(index.html index.htm)全流程(包含遇到问题的解决)

    自己有个域名,原来直接扔在了服务器的文件夹里(根据客服人员指导),自己玩了一遍nginx的安装部署等操作之后,域名的指向发生了改变,到了nginx成功的界面。

    kirin

扫码关注云+社区

领取腾讯云代金券