Nginx简单教程

news/2024/7/7 21:46:47 标签: nginx

原文: Java旅途

地址: https://mp.weixin.qq.com/s/3mY2IxVRJIbzlib9OYD_zQ

 

一 、Nginx简介

1、 什么是Nginx

Nginx是一个高性能的http和反向代理服务器,其特点是占用内存小,并发能力强。Nginx专为性能优化而开发,性能是其最重要的考量,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。

2、 反向代理

正向代理:在浏览器中配置代理服务器,通过代理服务器进行互联网访问。

反向代理:将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴漏的是代理服务器地址。

3、 负载均衡

如果请求数过大,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器的情况改为请求分发到多个服务器上,就是负载均衡。

4、 动静分离

为了加快服务器的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。

二 、Nginx的安装

Nginx需要几个依赖包,分别是pcreopensslzlib,在安装nginx之前需要先安装这几个依赖。

1 、安装pcre依赖

使用命令下载pcre压缩包

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

解压压缩文件

tar -xvf  pcre-8.37.tar.gz

进入解压后的名录,执行以下命令

./configure

使用以下命令进行编译安装

make && make install

查看安装的pcre版本号

pcre-config --version

2 、安装openssl,zlib等依赖

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

3 、安装nginx

  • nginx官网下载nginx,官网地址:https://nginx.org/download/;

  • 将压缩包拖到服务器上;

  • 使用命令tar -xvf nginx-1.12.2.tar.gz解压压缩包;

  • 使用命令./configure检查;

  • 使用命令make && make isntall编译安装;

安装成功后,在usr会多出来一个文件夹,local/nginx,在nginxsbin文件夹下有启动脚本。

4 、启动nginx

/usr/local/nginx/sbin文件夹下,使用以下命令启动

./nginx

然后浏览器访问服务器ip,nginx默认端口是80,出现以下页面则证明nginx安装成功;

 

5 、Nginx常用的命令

使用这些命令时需要进入/usr/local/nginx/sbin文件夹

查看nginx的版本号

./nginx -v

启动nginx

./nginx

关闭nginx

./nginx -s stop

重新加载nginx

./nginx -s reload

6 、Nginx的配置文件

nginx的配置文件在/usr/local/nginx/conf中的nginx.conf。我们将nginx.conf中注释的内容删除一下。

 #user  nobody;
 worker_processes  1;
 
 4#pid        logs/nginx.pid;
 
 events {
     worker_connections  1024;
 }
 
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

nginx的配置文件包含三部门。

6.1、全局块

从配置文件开始到events块之间的内容,主要会设置一些nginx服务器整体运行的配置指令。

worker_processes  1;

这个代表nginx处理并发的关键配置,值越大,处理并发能力越强。但是会受到硬件、软件等约束。

6.2、events块

events块涉及的指令主要影响nginx服务器与用户网络的连接。

worker_connections  1024;

这个代表nginx支持的最大连接数。

6.3、http全局块

nginx服务器配置最频繁的部分。http全局块包含http块server块

三 、Nginx配置反向代理

1 、ngix代理流程

 

本地浏览器访问nginx服务器,nginx服务器反向代理tomcat服务器,当我们请求nginx的时候直接访问到tomcattomcat的安装这里就不在讲了,我将tomcatnginx安装在了同一台服务器上。

2 、配置ip和域名的绑定关系

由于我们的nginx没有域名,为了演示,因此我们在本地host文件中配置nginx服务器ip和域名进行绑定。这个host文件的具体位置在C:\Windows\System32\drivers\etc。在host文件中增加一句配置:

47.104.xxx.xxx www.javatrip.com

前面的ip是服务器的ip地址,后面的域名是我随便起的用于绑定这个ip的一个域名。配置好之后,我们使用域名访问一下tomcat,如果能请求到tomcat默认页面,则配置成功。

 

3、 在nginx配置请求转发

  server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
  }

我们将以上默认的配置文件做个修改:

 server {
     listen       80;
     server_name  47.104.xxx.xxx;
 
     location / {
         root   html;
         proxy_pass http://127.0.0.1:8080;
         index  index.html index.htm;
     }
}

以上这段配置的意思就是请求是47.104.xxx.xxx:80,都会转发至47.104.xxx.xxx:8080

现在浏览器访问www.javatrip.com,发现直接转发到了tomcat上了,这样简单的反向代理就完成了。

4 、根据请求后缀分发

我们再解压一个tomcat,端口号设置为8081,分别在两个tomcatwebapps目录下面新建devprod目录,然后在该目录下写一个文件。

将请求www.javatrip.com:7001/dev转发到tomcat8080,将请求www.javatrip.com:7001/prod转发到tomcat8081。现在我们的nginx监听的端口号是7001。打开nginx的配置文件,新建一个server如下:

 server {
     listen       7001;
     server_name  47.104.xxx.xxx;
 
     location ~ /dev/ {
         proxy_pass http://127.0.0.1:8080;
     }
 
     location ~ /prod/ {
        proxy_pass http://127.0.0.1:8081;
    }
}

然后试试效果,分别访问www.javatrip.com:7001/dev/a.html和www.javatrip.com:7001/prod/a.html,效果如下:

 

其中,配置转发的时候用到了~,其含义内容如下:

  • = 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。

  • ~ 为区分大小写匹配(可用正则表达式)

  • !~为区分大小写不匹配

  • ~* 为不区分大小写匹配(可用正则表达式)

  • !~*为不区分大小写不匹配

  • ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx如果路径匹配那么不测试正则表达式。

四 、Nginx配置负载均衡

1 、什么是负载均衡

负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。

现在我们想实现的效果是通过访问www.javatrip.com:7001/prod/a.html,将请求分别分发到两个tomcat上面去,首先我们在tomcat8080上新建一个prod的文件夹,里面放一个a.html的文件。这样tomcat8081tomcat8080两个上就都有了一个prod的文件加且里面有一个a.html的文件。

2 、配置nginx.conf

首先,在http块中配置两个tomcat的服务列表

upstream myserver{
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

其次,在server块中配置规则:

 server {
     listen       80;
     server_name  47.104.xxx.xxx;
 
     location / {
         root   html;
         proxy_pass http://myserver;
         index  index.html index.htm;
     }
}

3、测试效果

访问地址:www.javatrip.com:7001/prod/a.html,多刷新几次。发现有的请求到tomcat8080上,有的请求到tomcat8081上。

 

 

4、 nginx支持的几种负载策略

轮询(默认):每个请求按时间顺序逐一分配到不同的服务器,如果服务器down了,会自动剔除。

upstream myserver{
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

weight(权重):默认为1,权重越高,分配的请求越多。

upstream myserver{
    server 127.0.0.1:8080 weight=1;
    server 127.0.0.1:8081 weight=2;
}

ip hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后台服务器,可以解决session的问题。

upstream myserver{
    ip_hash;
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

fair(第三方):按后端响应时间进行分配,响应时间越短分配的请求越多。

upstream myserver{
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    fair;
}

本篇文章做为一个nginx入门,到这里就基本完结了。


http://www.niftyadmin.cn/n/857016.html

相关文章

c语言.rc文件,Android init.rc文件简单介绍

Android init.rc文件简单介绍init.rc脚本是由Android中linux的第一个用户级进程init进行解析的。init.rc 文件并不是普通的配置文件,而是由一种被称为“Android初始化语言”(Android Init Language,这里简称为AIL)的脚本写成的文件。该文件在ROM中是只读…

pandas 改列名称_pandas dataframe 更改列名称

答:修改方法有两种1、使用DataFrame.index [newName],DataFrame.columns [newName],这两种方法可以轻松实现。2、使用rename方法(推荐):DataFrame.rename(mapper None,index None,columns None&#x…

Java做图片上传、文件上传、 批量上传、 Base64图片上传 。附上源码

Java做文件上传、图片上传后台方法 利用Springboot快速搭建项目环境 项目源码已经上传到码云:https://gitee.com/jack_party/upload 。喜欢的朋友可以支持一下。 配置文件设置保存路径、上传文件大小限制。 #注册可访问的图片路径(打包发布后的jar文件…

SpringBoot——动态多线程并发定时任务

实现定时任务有多种方式,使用spring自带的,继承SchedulingConfigurer的方式。 一、实现 1、启动类 在启动类添加注解EnableScheduling开启,不然不起用做。 EnableScheduling SpringBootApplication public class TansciApplication {publi…

idea.py 文件图标有问号_为何手机存储空间还没用就快满了?删掉这些隐藏冗余文件满血复活...

大家好,我是吐槽猫。事情是这样的,我的手机是去年9月份买的,配置是664GB,用了还不到一年,存储空间占用率就一直处在85%~90%居高不下。无奈之下删除手机里的大部分音频和视频、卸载了所有不常用APP、然后把内存大户微信…

Java图片上传Base64 类型上传 后台转换工具类

java图片上传Base64 类型上传 后台转换工具类 import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream;import org.springframework.web.multipart.MultipartFile;import sun.m…

linux 17,Manjaro Linux17.1.0版本发布

导读赶在2018元旦之前,Manjaro Linux也发布了17.1.0版本。项目首席Philip Mller表示,Manjaro Linux 17.1.0现已开放下载。作为一款深受欢迎的、基于Arch的Linux发行版,Manjaro配备了一款友好的安装器。喜迎新年:Manjaro Linux发布…

编写简易计时程序HTML,JS实现简易计时器

JS实现简易计时器原创Cherish纯紫2019-11-21 14:59:44著作权阅读数464©著作权归作者所有:来自51CTO博客作者Cherish纯紫的原创作品,如需转载,请注明出处,否则将追究法律责任https://blog.51cto.com/u_13701875/2452243.conta…