当前位置: 首页 > article >正文

Nginx是什么?怎么用?

Nginx介绍

Nginx (读作 “engine-x”) 是一款高性能的HTTP和反向代理服务器,同时也可用作IMAP/POP3/SMTP代理服务器。由俄罗斯程序员Igor Sysoev开发,首次公开发布于2004年。Nginx以其稳定性、高性能和低内存消耗闻名,尤其擅长处理静态文件、执行高速缓存和作为负载均衡器。

Nginx的主要特点:

  1. 高并发连接处理:Nginx使用事件驱动架构和异步非阻塞IO模型,使得其能有效地处理大量并发连接,不会因为请求过多而导致资源耗尽。

  2. 反向代理:Nginx 可以作为反向代理服务器,接收来自用户的请求,然后将请求转发给后端服务器集群中的某一台服务器处理,实现负载均衡。

  3. 静态内容服务:Nginx 对静态文件的支持非常好,可以直接高效地处理静态网页、图片和其他文件请求。

  4. 负载均衡:通过配置,Nginx可以将流量均匀地分配到多个后端服务器,支持多种负载均衡策略,如轮询、最少连接数、IP哈希等。

  5. 缓存功能:Nginx 可以对常用的内容进行缓存,显著提高响应速度,减轻后端服务器的压力。

  6. 限速和保护:Nginx 提供了对客户端的速率限制机制,避免恶意攻击或过载,还可以配置访问控制规则,提供基础的安全防护。

  7. 可扩展性:通过模块化设计,Nginx 可以通过添加第三方模块来增加更多的功能。

Nginx使用详解

基本配置示例:

  • 启动监听端口:在 Nginx 的配置文件(通常位于 /etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf)中,你可以在 http 块或某个 server 块内设置监听端口:
http {
    server {
        listen 80; # 监听HTTP默认端口
        server_name example.com; # 服务器名或域名

        location / {
            root /var/www/example; # 设置网站根目录
            index index.html index.htm; # 默认索引文件
        }
    }
}
  • 反向代理配置:要将请求转发至后端服务器,可以使用 proxy_pass 指令:
location /api {
    proxy_pass http://backend_servers; # 将/api路径的请求转发至后端服务器集群
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}
upstream backend_servers {
    server backend1.example.com:8080; # 后端服务器1
    server backend2.example.com:8080; # 后端服务器2
    # 可以配置负载均衡策略
}
  • 负载均衡配置:比如使用轮询策略:
upstream backend {
    server backend1:80 weight=1;
    server backend2:80 weight=2; # 该服务器权重更高,因此获取请求的概率更大
    # 更多服务器...
    # 使用round-robin作为默认负载均衡策略
}

server {
    ...
    location / {
        proxy_pass http://backend;
    }
}

配置完成后,需要使用 nginx -t 命令检查配置文件是否正确,若无误,则执行 nginx -s reload 命令重新加载配置文件,使其生效。如果需要停止或重启服务,则分别使用 nginx -s stopnginx -s quit && nginx(或 systemctl restart nginx 如果在系统服务中管理)命令操作。


http://www.kler.cn/a/504433.html

相关文章:

  • 【大数据】机器学习------决策树
  • react Hooks 父组件调用子组件函数、获取子组件属性
  • react与nodejs实现流式传输,并可以进行中断(fetch聊天版)
  • RTX 5090 加持,科研服务器如何颠覆 AI 深度学习构架?
  • 自动驾驶ADAS算法--测试工程环境搭建
  • RDP、VNC、SSH 三种登陆方式的差异解析
  • 工程水印相机结合图纸,真实现场时间地点,如何使用水印相机,超简单方法只教一次!
  • 【免费开源】积木JimuBI大屏集成eladmin
  • arcgis中生成格网矢量带高度
  • 【MySQL】简单解析一条SQL查询语句的执行过程
  • 注册中心及技术选型对比分析
  • Single-agent和Multi-agent的区别及各自适用的落地场景(ChatGPT-4o,智谱清言 GLM 4 Plus 回答)
  • C#使用OpenTK绘制3D可拖动旋转图形三棱锥
  • 2025年01月13日Github流行趋势
  • 网络层协议-----IP协议
  • k8s之pod生命周期
  • Open FPV VTX开源之betaflight配置
  • 深度剖析RabbitMQ:从基础组件到管理页面详解
  • TiDB常见操作指南:从入门到进阶
  • Unreal Engine 5 C++ Advanced Action RPG 八章笔记