前言
经常在访问网站时看到nginx,就去了解了下。

什么是Nginx?

Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。

随着当今互联网的迅速发展,单点服务器早已无法承载上万个乃至数十万个用户的持续访问。比如一台Tomcat服务器在理想状态下只能够可以承受住2000个左右的并发量,为了解决这个问题,就需要多台Tomcat服务器来进行负载均衡。

那么,应该如何实现负载均衡?Nginx就是其中的一种解决方案,当用户访问网站时,Nginx拦截到这个访问请求,并将其通过轮询的方式均匀地分配到不同的服务器上。

image-20240223222445955

正向代理、反向代理

image-20240223222026350

  • 正向代理: 我们平时需要访问国外的浏览器是不是很慢,比如我们要看推特,看GitHub等等。我们直接用国内的服务器无法访问国外的服务器,或者是访问很慢。所以我们需要在本地搭建一个服务器来帮助我们去访问。那这种就是正向代理。(浏览器中配置代理服务器)

    客户端将自己的请求率先发给代理服务器,通过代理服务器将请求转发给服务器。我们常用的VPN就是一种代理服务器,为了可以连上国外的网站,客户端需要使用一个可以连接外网的服务器作为代理,并且客户端能够连接上该代理服务器。

    image-20240223222308591

  • 反向代理: 那什么是反向代理呢。比如:我们访问淘宝的时候,淘宝内部肯定不是只有一台服务器,它的内部有很多台服务器,那我们进行访问的时候,因为服务器中间session不共享,那我们是不是在服务器之间访问需要频繁登录,那这个时候淘宝搭建一个过渡服务器,对我们是没有任何影响的,我们是登录一次,但是访问所有,这种情况就是 反向代理。对我们来说,客户端对代理是无感知的,客户端不需要任何配置就可以访问,我们只需要把请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的地址。(在服务器中配置代理服务器)

    image-20240223222411880

总而言之:正向代理是代理客户端,反向代理代理服务器。

Windows下安装与配置

  1. 下载

    nginx: download

    下载windows版本安装包,解压即可

    解压后目录如下

    image-20240223222657860

  2. 配置

    进入nginx-1.24.0\conf 文件夹,编辑nginx.conf配置文件

    image-20240223222859823

    直接访问Welcome to nginx!

    会返回index.html文件。

    访问localhost:3737/hxh/demo1.html,会请求 D:\cesiumproject\cesium_demo\src\demo.html。

    访问localhost:3737/test/tdt.html,会请求 D:\tilemap\test_html\tdt.html。

    值得注意的是:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    location /hxh {
    alias D:/cesiumproject/cesium_demo/src;
    }
    访问localhost:3737/hxh下的资源会直接指向D:\cesiumproject\cesium_demo\src

    location /hxh {
    root D:/cesiumproject/cesium_demo/src;
    }
    访问localhost:3737/hxh下的资源会直接指向D:\cesiumproject\cesium_demo\src\hxh

    另外:

    直接访问路径如/hxh,会返回该相应路径下的index.html文件。

    如果没有index.html文件,可以设置显示目录

    即:访问目录时,目录下有index.html文件,则返回该文件;若无,且设置了autoindex on 则返回目录

    1
    2
    3
    4
    5
    6
    location /test {  
    root /data/www/file //指定实际目录绝对路径;
    autoindex on; //开启目录浏览功能;
    autoindex_exact_size on; //关闭详细文件大小统计,让文件大小显示MB,GB单位,默认为b;
    autoindex_localtime on; //开启以服务器本地时区显示文件修改日期!
    }

    image-20240224135117263

    可局域网内访问,手机也可以

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    server {
    listen 3737;
    server_name 223.2.36.7; # 设置为本机的ip


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

    location /hxh {
    alias D:/cesiumproject/cesium_demo/src;
    autoindex on;
    }

    location /test {
    alias D:/tilemap/test_html;
    autoindex on;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root html;
    }
    }
  3. 启停

    start nginx.exe ## 启动服务
    nginx.exe -s stop ## 快速停止服务
    nginx.exe -s quit ## 优雅的 停止服务

    nginx.exe -s reload ## 重新加载 配置文件,这命令可以不用停止nginx
    nginx.exe -s reopen ## 重新打开日志文件