Fork me on GitHub

Nginx

  • 什么是Nginx
  • 使用场景
  • 使用案例
  • 面试

重点

  • 反向代理,负载均衡,配置文件各模块的理解
  • 反向代理和负载均衡的搭建

  • Nginx 在分布式中的应用

参考

https://www.cnblogs.com/ysocean/p/9384877.html

https://www.cnblogs.com/54chensongxia/p/12938929.html

概述

什么是Nginx

代理服务器:Nginx 常用来做负载均衡和反向代理,比如一个服务性能有限,可以创建多个服务实例,通过Nginx配置,对外表现为只有一个服务(提供一个域名,再转发到内网),所有请求到Nginx,Nginx再转发的某个服务,官方测试能够支撑 5 万的并发量;运行时内存和 CPU 占用率低。

常用命令

sbin目录下执行./nginx启动nginx

./nginx -s stop 停止Nginx

./nginx -s quit平缓停止,可以将当前正在处理的请求执行完

./nginx -s reload重启Nginx

nginx -t -c /usr/local/nginx/conf/nginx.conf检测配置文件语法是否正确

正向代理和反向代理的区别

  • 正向代理代理的是客户端,反向代理代理的是服务端
  • 反向代理
  • 负载均衡

nginx的负载均衡策略

  • 轮询
  • 设置权重
  • 一致性hash,ipHash与url_hash

使用

安装

配置文件

  • 一个 http 配多个 server

精简后的主体结构

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

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

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

全局块

woker_processes 2 ,工作进程数可以设置成CPU核心数

events

worker_connections 1024; 表示每个 work process 支持的最大连接数为 1024.

http

server

每个 server 都是一个虚拟主机(站点)Nginx 收到请求会根据 host 和 port 来匹配 server

location

一个 server 块可以配置多个 location 块, 已经根据 host 和 port 匹配到 server 了,然后根据剩下的请求字符串来匹配 location

匹配规则

指定前缀

必须以abc开始

location /abc {

}

=

表示必须请求匹配

uri必须是/abc

location /abc {

}

location遵循最大前缀匹配结果

反向代理

正向代理代理客户端,反向代理代理服务器。

反向代理:

多个服务对外表现为一个服务器,客户端直接访问代理服务器,反向代理决定请求哪个服务器。

为什么要进行反向代理?

配置

server{
	listen 监听的端口号;
	server_name 监听的主机名;
	
	location /mail {
		proxy_pass http://127.0.0.1:8080
		index 
	}
	
	location /phone {
		proxy_pass http://127.0.0.1:8081
		index 默认首页
	}
}

负载均衡

就是配置一个upstream,location中的proxy_pass中使用upstream的名字

配置upstream

upstream OrdinaryPolling {
	server 127.0.0.1:8080 weight=5;
	server 127.0.0.1:8081 weight=2;
}
server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://OrdinaryPolling;
            index  index.html index.htm index.jsp;

        }
    }

可以进行加权

负载均衡策略

  • 轮询(能够自动剔除故障的服务器)
  • 权重(weigth越大,访问概率越高)
  • ip_hash,相同请求地址会分到同一个后端服务,保证session共享

动静分离

静态资源就是HTML,IMG等这些可以直接访问的文件

动态资源则是需要后端进行计算的资源

location ~* \.(png|jpg|mp4)${
     #指定图片路径
    root /code/wordpress/images;
    #压缩
    gzip on;
    .....
}

虚拟主机

虚拟主机

把一台运行在互联网上的物理服务器划分成多个“虚拟”服务器

跨域问题

跨域问题由浏览器的同源策略造成的,同源是指协议,host和port都需要相同

使用Nginx转发请求。把跨域的接口写成调本域的接口,然后将这些接口转发到真正的请求地址。

高可用

keepalived

Nginx是怎么处理请求的

先根据请求的server_name和port定位到一个server,然后匹配location

Nginx做限流

Nginx中使用ngx_http_limit_req_module模块来限制的访问频率,限制的原理实质是基于漏桶算法原理来实现的。在nginx.conf配置文件中可以使用limit_req_zone命令及limit_req命令限制单个IP的请求处理频率。

面试

Nginx40问

Nginx为什么这么快

Nginx如何实现一个域名访问多个服务

posted @   ptuo  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示