Nginx 的安装和使用

Nginx 的安装和使用

Nginx是一款轻量级的Web 服务器反向代理服务器及电子邮件(IMAP/POP3)代理服务器,是 lgor Sysoev 为俄罗斯访问量第二的 rambler.ru 站点设计开发的,用C语言编写。中国大陆使用 Nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx 常用功能

反向代理

  • 先来了解一下什么是正向代理

    代理的是内部网络(浏览器)对外部网络(Internet)的请求(如VPN),客户端将请求访问目标发送到代理服务器,再由代理服务器将请求发送到目标服务器,并将返回信息传递回客户端。

    发送请求,返回结果,对外表现为客户端。

  • 反向代理

    代理的是外部网络内部网络的请求,代理服务器接收来自外部的请求后,将请求发送到内部服务器,并将服务器的返回信息返回给请求方。

    接收请求,返回结果,对外表现为服务器。

负载均衡

将数据流量按照一定规则分摊到多个服务器,减轻一台服务器的压力,从而提高服务的性能与可靠性。

Nginx 负载均衡策略

Nginx 常见负载均衡策略 6 种:

负载均衡策略 说明
轮询 默认方式
weight 权重
ip_hash 根据客户端 ip 计算的 hash 值分配
least_conn 最少连接数
url_hash 根据请求的 URL 地址的 hash 值分配
fair 响应时间 (需下载第三方模块)

动静分离

作为web服务器,自然可以处理web资源,但不同于tomcat一类的web应用服务器,无法处理解析 jsp 等动态资源,只能处理 html,css,js 等静态资源

web服务器的并发能力要优于web应用服务器,将静态资源放到 Nginx,可以提高静态资源的访问效率。

Nginx 的安装(Linux)

安装

Nginx 官网下载安装包

# 安装Nginx的依赖库
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 解压安装包
tar -zxvf nginx-1.10.0.tar.gz
# 配置Nginx安装路径
cd nginx-1.10.0
./configure --prefix=/usr/local/nginx
# 编译并安装
make && make install

启动与关闭

简单介绍一下nginx的目录结构

├── client_body_temp         # _temp结尾的均为临时目录
├── conf                     # Nginx所有配置文件的目录
│   ├── nginx.conf                # Nginx主配置文件
├── fastcgi_temp             # fastcgi临时数据目录
├── html                     # Nginx默认站点目录
│   ├── 50x.html                  # 错误页面替代文件
│   └── index.html                # 默认的首页文件
├── logs                     # Nginx日志目录
│   ├── access.log	          # 访问日志文件
│   ├── error.log	          # 错误日志文件
│   └── nginx.pid	          # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp
├── sbin                     # Nginx命令目录
│   └── nginx			  # Nginx的启动命令
├── scgi_temp
└── uwsgi_temp

启动

#在nginx/sbin目录下,有一个nginx可执行程序
./nginx

测试:访问虚拟机地址

image-20220919194645131

关闭

./nginx -s stop

更新配置文件

# Nginx运行状态下执行
./nginx -s reload

配置文件描述

#user  nobody;
#工作进程
worker_processes  1;

events {
    #连接池连接数
    worker_connections  1024;
}
#请求方式
http {
    #媒体类型
    include  mime.types;
    #默认媒体类型 二进制
    default_type  application/octet-stream;
    #上传文件
    sendfile  on;
    #超时时间
    keepalive_timeout  65;

	#开启gzip压缩
    #gzip  on;
    #服务器配置
	server {
        #监听端口
        listen       80;
        #监听域名
        server_name  localhost;
        #请求头信息
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #请求映射规则,/代表所有请求路径
        location / {
            #请求转发地址
            root html;
            #欢迎页
            index  index.html index.htm;
            #转发连接超时时间
	    proxy_connect_timeout 600;
            #转发读取超时时间
	    proxy_read_timeout 600;
        }
    }
}

Nginx 的使用

反向代理

Nginx代替服务接收请求,比如代理发送到tomcat的请求

  • 修改Nginx配置文件:

    # 在server块中修改location中的内容
            location / {
                proxy_pass http://127.0.0.1:8080;
                root html;
                index  index.html index.htm;
                proxy_connect_timeout 600;
                proxy_read_timeout 600;
            }
    

这样直接访问虚拟机ip,无需添加端口号即可直接访问tomcat

image-20220919200522150

负载均衡

  1. 在http块中添加一个upstream修饰块

        upstream tomcatCluster{
            server 127.0.0.1:8080;
            server 127.0.0.1:8090;
        }
    
  2. 修改location 中反向代理地址

            location / {
                proxy_pass http://tomcatCluster;
                root html;
                index  index.html index.htm;
                proxy_connect_timeout 600;
                proxy_read_timeout 600;
            }
    

Nginx 的负载均衡策略配置

  • 轮询

    默认策略,请求按照顺序依次发送到不同服务器

  • 权重

    	# weight 的值必须是大于等于 1 的整数,不写默认为 1
    	upstream tomcatCluster{
            server 127.0.0.1:8080 weight=4; # 接收到请求的概率为 4/(4 + 1)
            server 127.0.0.1:8090 weight=1;
        }
    
  • ip_hash

    根据客户端ip的hash值分配,可以使同一客户端的请求始终发送到同一服务器上,可以解决tomcat集群的session共享问题。

    	upstream tomcatCluster{
        	ip_hash;
            server 127.0.0.1:8080;
            server 127.0.0.1:8090;
        }
    

    但服务器宕机依然会造成session丢失,解决方案:

    • 利用tomcat的广播机制实现session共享(仅支持windows)

    • 更好的方案:可以使用Redis进行session共享

  • url_hash

    根据访问url的hash值分配,可以使同一资源请求发送到同一台服务器,减少资源获取时间,提高缓存的利用率。

    	upstream tomcatCluster{
        	hash $request_uri;
            server 127.0.0.1:8080;
            server 127.0.0.1:8090;
        }
    
  • least_conn

    将请求分配到当前连接数较少的服务器

    	upstream tomcatCluster{
        	least_conn;
            server 127.0.0.1:8080;
            server 127.0.0.1:8090;
        }
    
  • fair

    根据响应时间分配,要使用这个策略需要先安装 nginx_upstream_fair 模块,安装过程就不在这里详述了。

    	upstream tomcatCluster{
        	fair;
            server 127.0.0.1:8080;
            server 127.0.0.1:8090;
        }
    

动静分离

静态资源直接交由Nginx缓存,jsp等动态资源仍然交给tomcat处理。

在Nginx虚拟机中新建一个 images 目录,并上传一张图片

  • 修改Nginx配置文件:

    # 在server块中添加location块
    	location ~* \.(gif|jpg|png|jpeg)$ {
    		root /upload/images;
    	}
    

测试:访问 虚拟机ip/图片名

image-20220919194956141
posted @   魔力鼠  阅读(86)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示