Nginx----web服务器,反向代理服务器

article/2025/8/22 5:43:26

一. Nginx介绍

1.1 什么是Nginx?

Nginx是一款轻量级的Web 服务器反向代理服务器及电子邮件(IMAP/POP3)代理服务器,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

1.2 Nginx的特点

反向代理: 代替tomcat服务器接收用户请求

负载均衡:将请求分发到多个tomcat服务器

动静分离 : 将静态资源交给nginx处理

1.2.1 什么是反向代理?(代理服务可简单的分为正向代理和反向代理: )

反向代理:

与正向代理相反, 反向代理是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器

所谓的反向代理就是代替服务器接受用户的请求,从目标服务器中取得用户的需求资源,然后发送给用户

1.2.2  什么是负载均衡?

负载均衡:数据流量分摊到多个服务器上执行,减轻每台服务器的压力,多台服务器共同完成工作任务,从而提高了数据的吞吐量。

1.2.3  什么是动静分离?

动静分离:将静态的资源放到反向代理服务器,节省用户的访问时间

Web服务器分2类:

  • web应用服务器,如:
  • tomcat

  • resin

  • web服务器,如:

  • Apache 服务器

区分:web服务器不能解析jsp等页面,只能处理js、css、html等静态资源。

并发:web服务器的并发能力远高于web应用服务器。

二. 安装Nginx

2.1 下载Nginx

官方网站:nginx news

2.2. 安装nginx

  • 安装nginx的依赖库--基于c语言开发

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/java/nginx

注意:./configure配置nginx安装到/usr/java/nginx目录下

  • 编译并安装

make && make install

2.3 目录结构

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

 2.4 配置文件介绍

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

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

    #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;
             proxy_pass http://manage.powershop.com:8080;
             #欢迎页
             #index  index.html index.htm;
             #转发连接超时时间
            proxy_connect_timeout 600;
             #转发读取超时时间
            proxy_read_timeout 600;
        }
    }
}

2.5. Nginx的启动及关闭

  • 启动
#在nginx目录下有一个sbin目录,sbin目录下有一个nginx可执行程序
./nginx
  • 测试

  • 关闭nginx

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

 #关闭nginx

./nginx -s stop 

#可以不关闭nginx的情况下更新配置文件
./nginx -s reload

三. Nginx开启自启动 

3.1 编写开机启动文件

  • 添加nginx.service文件

vim /lib/systemd/system/nginx.service

  • 文件内容如下:

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

3.2 设置开机启动

systemctl daemon-reload        #重新加载服务配置


systemctl enable nginx.service #设置为开机启动


systemctl start nginx.service  #启动服务


systemctl status nginx.service #查看服务状态


systemctl stop nginx.service   #停止服务

四.Nginx代理tomcat

4.1 在linux中安装两台tomcat

  • 解压两个tomcat到/usr/java,分别命名为tomcat1,tomcat2
  • 修改tomcat的配置文件,将端口进行修改:

  • 将资料中的test.war项目分别发布到两个tomcat中并测试  

 4.2 代理一台tomcat(反向代理)

  • 修改nginx/conf/nginx.conf文件:

 4.3 代理多台tomcat(负载均衡)

  • 在http节点上添加一个upstream
  • 修改location /下的反向代理

五. Nginx负载均衡策略

5.1 6种负载均衡策略

负载均衡策略说明
轮询默认
weight权重方式
ip_hash依据ip分配方式
least_conn按连接数
fair按响应时间
url_hash依据URL分配

5.2 权重

 5.3  Tomcat集群的session共享

问题:

  •  方法一:保证一个ip地址永远的访问一台tomcat服务器,就不存在session共享问题了(只支持linux)

      即:upstream中添加 ip_hash;

  • 方法二:session的共享

      一种使用tomcat广播机制完成session的共享(只支持windows,不推荐的方式)
      一种使用redis服务器的方式完成session的共享(推荐的方式)

5.4 动静分离

  • 在虚拟机中新建images文件夹,并上传图片
  • 配置nginx的nginx.conf

    location ~* \.(gif|jpg|png|jpeg)$ {
        root /usr/upload/images;
    }

  • 测试(这里我就不测试,谢谢)


http://chatgpt.dhexx.cn/article/t8b7ZKAO.shtml

相关文章

代理服务器和反向代理服务器详解

通常我们所说的代理,都是指的客户端向外界发起请求时,并不是直接与目标服务器连接,而是经过一个代理服务器,将所有请求交给代理服务器,由它去负责连接外界的目标服务器,同时从服务器返回的数据,…

Nginx搭建反向代理服务器

前面学了web资源服务器的搭建,这篇博文就总结一下如何搭建反向代理服务器。 为什么需要反向代理 反向代理是实现负载均衡的一种方法。假设,很多人同时对订单进行支付,此时,用于支付服务的上游服务器挂掉了,用户就没有…

nginx服务器有什么作用以及什么是反向代理?

最近再用在配置Nginx,学习记录下。 一.背景介绍 1.什么是Nginx? Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。 Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD…

反向代理服务器nginx-proxy-manager

一直以来,老苏都是使用群晖内置的反向代理,虽然很方便易用,但在某些情况下显得并不灵活。比如老苏打算安装 Authelia,需要修改 nginx 转发规则,必须通过 SSH 登录后找到相应的文件修改,这一点上不如 nginx-…

Nginx反向代理服务器

1、nginx简介 Nginx 是⼀个⾼性能的HTTP和反向代理web服务器,核⼼特点是占有内存少,并发能⼒强。 Nginx的应用场景: Http服务器(Web服务器) 1、性能⾮常⾼,⾮常注重效率,能够经受⾼负载的考验…

反向代理服务器的工作原理

最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡。所以搜罗了一些关于反向代理服务器的内容,整理综合。 一 概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的…

Nginx反向代理服务器搭建(超详细)

一、简介 Nginx (engine x) 是一个高性能的Web服务器和反向代理服务器,也可以作为邮件代理服务器。 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上…

什么是反向代理?

正向代理 当客户端访问一台服务器有障碍,访问不到的时候,这时候就可以找一台可以访问到该服务器的另外一台服务器去代替他去访问,这台代替他去访问的服务器称之为代理服务器。然后客户端就可以把请求发送给代理服务器,然后通过代…

服务器反向代理

一、定义 正向代理 正向代理,代理的是客户端,为客户端发送请求,对服务器隐藏自己的真实客户端。 由下图可见,通过代理服务器,可以访问局域网外的服务器,突破自身ip的访问权限。比如翻墙访问外网。 一般而言…

什么是反向代理(代理服务器解释

什么是反向代理(reverse proxy)? A reverse proxy protects web servers from attacks and can provide performance and reliability benefits. Learn more about forward and reverse proxies. 反向代理是位于 Web 服务器前面的服务器,将客户端&…

反向代理服务器

反向代理服务器的概念 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址&#xff0…

超全Nginx反向代理服务器原理+实战篇

文章目录 1.Nginx简介和安装部署1.1.什么是Nginx1.2.Nginx的用途1.3.正向代理服务器1.4.反向代理服务器1.5.nginx安装部署1.6.线上访问服务器应用流程解析1.7.本地虚拟机配置宿主机域名映射2.Nginx核心基础知识2.1.Nginx目录结构2.2.Nginx核心配置文件2.3.Nginx搭建前端静态服务…

什么是反向代理服务器

我们常会看到‘反向代理服务器’这个名词,例如常看到文章上说 nginx 是一个反向代理服务器、varnish 是一个反向代理服务器 …… 下面就了解下这个概念 含义 ‘反向代理服务器’ 有两个概念,一是‘代理服务器’,二是‘反向’ ‘代理服务器’比…

入门Nginx反向代理服务器

前言 博主最近学习了Nginx,故想通过撰写博客的方式加强对知识的认识和记忆,所涉及知识浅薄,如有错误,敬请指正 一.Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器;其特点是占有内存少&#xff0…

推导大O阶方法

1、用常数1取代运行时间中的所有加法常数; 2、只保留最高阶项; 3、去除最高阶项的常数; 常数阶是O(1); 线性阶是O(n); 对数阶是O(logn); 平方阶是O&…

大O算法复杂度表示

序言:算法的时间复杂度和空间复杂度都是用“ 大O表示法” 来表示的。其中O是个常量。 常见的 排序算法的时间复杂度: 冒泡排序、插入排序、希尔排序、选择排序的时间复杂度是O(n^2); 快速排序的时间复杂度是 O&#…

数据结构学习笔记:算法复杂度的度量之“大O记号”

分析算法复杂度的非常重要的方法:大O记号!! 下面来让我们看一下到底什么是大O记号 举个例子: 用一个直尺去评价算法复杂度,上面的刻度就相当于大O记号,我们不一定要一味的强调刻度的精细程度,没…

算法复杂度渐进符号(大O、Ω和θ)的个人理解

做软考习题时,碰到了这样的一道题: 关于算法复杂度渐进符号(O、Ω、θ),详细解释可参考: 【双语字幕】什么是算法复杂度渐进符号?阿布老师算法课11 这里节选总结了视频的重点内容,…

数据结构考研:大O表示法最浅显易懂且详细深入的解释及与小o表示法的区别(十分钟必懂)

大O表示法的背景 作为软件工程专业的学生,在我们学习数据结构的时候,总是会碰见对各种算法时间复杂度和空间复杂度的大O表示法的描述。我们只是将信将疑的用着,并不知道大O表示法的准确含义,今天博主李同学在查阅各方资料后进行详…

算法的时间复杂度(大O表示法)

首先我们先来看个例子, 我想找个1~100的数字,你的目标是以最少的次数猜到这个数字。你每次猜测后,我会说小了、大了或对了。下面我们来看下两种简单的方法(方法有很多种),再来引入算法的运行时间&#xff0…