Nginx入门

Nginx

1.什么是Nginx

Nginx是一个高性能Web和反向代理服务器,占用内存少,并发能力强

2025-08-13_16-36-00

2.Nginx的特性

  1. 静态web网站(站点)

    • Nginx可直接作为静态资源的服务器,高效处理HTML、CSS、Js、图片、视频等静态文件的请求

    • Nginx本身不具有jdk的功能,解析不了JSP

    • Nginx对静态资源的处理效率极高,通过操作系统底层的I/O多路复用模型(如epoll),能同时处理大量并发链接,且占用内存极低

    • 配置方式:通过location指令指定静态资源目录,修改配置文件

      server {
              listen       81;
              server_name  localhost;
      		location / {
                  root   html;
                  index  index.html index.htm;
              }
      	}
      
  2. 负载均衡服务器

    • 当后端存在多台应用服务器时,Nginx可作为负载均衡器,将客户端请求合理分配到不同的服务器,避免单台服务器过载
    • 核心作用:提高系统的吞吐量、增强可用性
    • 常用策略:
      • 轮询(默认):按顺序一次分配
      • 权重:按权重分配(为性能不同的服务器分配权重)
      • IP哈希:根据客户端的IP哈希值分配请求,确保同一客户端始终访问同一服务器
    upstream 65web {
     server 192.168.41.1:8080 weight=1 max_fails=2 fail_timeout=30s;
    	server 192.168.41.1:8081 weight=2 max_fails=2 fail_timeout=30s;
     # weight:服务器权重 权重值越高,分配到的请求比例越大
     # max_fails:指定在fail_timeout时间内,允许请求失败的最大次数
     # fail_timeout:判断服务器不可用的时间窗口;当服务器标记为不可用时,等待xx秒才会尝试向该服务器发送请求
    }
    		# location 规则  静态资源
    		location ~* \.(gif|jpg|jpeg|png|css|js|ico|html)$ {
    			root /usr/local/nginx/html81;
    		}
    		
    		# location 规则  动态资源
    		location / {
    			proxy_pass http://65web/;
    		}
    
  3. 反向代理服务器

    • 反向代理是指Nginx作为客户端的“中间人”,接受客户端请求后,转发到后端服务器,并将后端响应返回给客户端
    • 核心作用:
      • 隐藏后端服务器IP,提高安全性
      • 统一入口
      • 实现HTTPS终结(Nginx处理SSL证书,后端服务无需关心加密)
    • 与正向代理的区别:
      • 正向代理 是客户端主动配置的代理,用于访问外部资源
      • 反向代理 是服务端部署的代理,用于隐藏后端服务细节
    server {
        listen 81;
        
        location / {
            proxy_pass http://192.168.41.1:8080;  # 转发到后端 API 服务
            proxy_set_header Host $host;  # 传递原始 Host 头
            proxy_set_header X-Real-IP $remote_addr;  # 传递客户端真实 IP
        }
    }
    
  4. 动静分离服务器

    • 动静分离服务器指的是将静态资源和动态资源的请求分开处理,Nginx直接处理静态资源,动态资源请求转发到后端应用服务器
    • 核心作用:减轻后端应用级服务器的压力,提高整体服务响应速度
    • 实现方式:通过location指令匹配URL路径,区分静态和动态的请求
    server {
        listen 80;
        server_name example.com;
        
        # 静态资源:直接由 Nginx 处理
        location ~* \.(html|css|js|jpg|png)$ {
            root /var/www/static;
            expires 1d;  # 设置缓存时间,减少重复请求
        }
        
        # 动态资源:转发到后端 Tomcat
        location /api {
            proxy_pass http://192.168.1.100:8080;
        }
    }
    

3.Nginx常用命令

Nginx启动命令:./nginx -s reload

4.location语法规则

语法规则:location [= | ~ | ~* | ^~] /url/ {...}

  • = 开头 表示精确匹配
  • ~ 开头 表示区分大小写的正则匹配
  • ~* 开头 表示不区分大小写的正则匹配
  • ^~ 开头 表示表示 url 以某个常规字符串开头,理解为匹配 url路径即可
  • / 通用匹配,任何请求都会匹配到

优先级

  • 匹配 =
  • 匹配 ^~
  • 按文件中顺序的正则匹配
  • 交给 / 通用匹配
posted @ 2025-08-13 22:22  Charon-YC  阅读(10)  评论(0)    收藏  举报