Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >后端开发人员必备的一份NGINX学习清单

后端开发人员必备的一份NGINX学习清单

原创
作者头像
兔云小新LM
发布于 2024-06-28 17:41:04
发布于 2024-06-28 17:41:04
2330
举报

大家好,我是小麦。今天分享一篇关于NGINX常用的配置清单。

作为一名服务端研发工程师,接触服务器的时间也比较多。在项目对外提供服务,我们一般会使用NGINX来提供对外的服务,因此NGINX的操作也非常多,这就需要我们对NGINX比较熟悉,因此特意整理了一份相对完善的清单。

首先还是对NGINX做一个简单的介绍,分别从是什么?有什么优势?以及使用的业务场景来聊聊NGINX。

什么是NGINX?

NGINX是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3代理服务器。它最初由Igor Sysoev开发,旨在解决C10K问题(即在单台服务器上同时处理1万个客户端连接)。如今,NGINX已经发展成为广泛使用的Web服务器、负载均衡器和反向代理服务器。

NGINX的优势

  1. 高性能:NGINX以事件驱动架构为基础,能够高效地处理大量并发连接,适用于高流量网站。
  2. 低资源消耗: NGINX使用较少的内存和CPU资源,能够高效地管理资源,适合在资源有限的环境中运行。
  3. 稳定性:NGINX在长时间高负载下表现出色,能够保持稳定运行,减少宕机和性能下降的风险。
  4. 灵活性和可扩展性:通过模块化架构,NGINX可以根据需要进行扩展和定制,以满足特定应用场景的需求。
  5. 反向代理和负载均衡:NGINX内置强大的反向代理和负载均衡功能,可以分发流量到多个后端服务器,提高应用的可用性和性能。
  6. 支持多种协议: 除了HTTP/HTTPS,NGINX还支持IMAP、POP3等邮件协议,以及HTTP/2、WebSocket等现代协议。
  7. 静态文件处理: NGINX在处理静态文件(如HTML、CSS、JavaScript和图像)方面非常高效,适合用于静态内容服务。

常用的业务场景

1、Web服务器

作为HTTP和HTTPS服务器,提供静态和动态内容服务。用于托管网站和Web应用程序。

2、反向代理

代理客户端请求,将请求转发到一个或多个后端服务器。用于隐藏后端服务器的真实地址,提供负载均衡和缓存功能。

3、负载均衡器:将流量分发到多个后端服务器,以提高应用程序的可用性和响应速度。支持多种负载均衡策略(如轮询、IP哈希、最少连接等)。

4、内容缓存:缓存后端服务器的响应,减少后端服务器的负载,提高响应速度。适用于静态内容和动态内容的缓存。

5、 SSL/TLS终端:处理SSL/TLS加密和解密,保护数据传输的安全性。用于HTTPS网站和Web应用程序的安全通信。

6、API网关:管理和保护API请求,提供身份验证、速率限制、日志记录和监控等功能。适用于微服务架构和分布式系统。

7、 邮件代理服务器: 代理IMAP和POP3邮件请求,提高邮件服务的性能和安全性。

示例配置

1. 基本Web服务器配置
代码语言:shell
AI代码解释
复制
server {
    listen 80;
    server_name example.com;

    location / {
        root /var/www/html;
        index index.html index.htm;
    }
}
2. 反向代理配置
代码语言:shell
AI代码解释
复制
server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
3. 负载均衡配置
代码语言:shell
AI代码解释
复制
http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}
4. 静态内容缓存配置
代码语言:shell
AI代码解释
复制
server {
    listen 80;
    server_name cache.example.com;

    location / {
        proxy_pass http://backend_server;
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
    }
}

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;

上述内容便是我对NGINX的大致总结,下面就来分享一下具体的只知识内容。

基本配置

  1. user: 指定运行 NGINX 服务的用户和用户组。user www-data;
  2. worker_processes: 设置工作进程的数量,通常设置为CPU核心数。worker_processes auto;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;性能优化events { worker_connections 1024; }keepalive_timeout 65;sendfile on;tcp_nopush on;tcp_nodelay on;HTTP 配置http { include /etc/nginx/mime.types; include /etc/nginx/conf.d/*.conf; }
  3. error_log: 指定错误日志文件的位置和日志级别。
  4. pid: 指定存储 NGINX 进程 ID 的文件。
  5. worker_connections: 设置每个工作进程的最大连接数。
  6. keepalive_timeout: 设置服务器与客户端连接的保持时间。
  7. sendfile: 启用高效的文件传输。
  8. tcp_nopush: 提高网络包的传输效率。
  9. tcp_nodelay: 提高小包数据的传输效率。
  10. include: 包含其他配置文件。
  11. default_type: 设置默认的 MIME 类型。default_type application/octet-stream;
  12. log_format: 定义日志格式。log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
  13. access_log: 指定访问日志文件的位置和格式。access_log /var/log/nginx/access.log main;
  14. send_timeout: 设置发送响应的超时时间。send_timeout 60s;

反向代理配置

  1. proxy_pass: 设置反向代理的地址。location / { proxy_pass http://localhost:8080; }
  2. proxy_set_header: 设置传递给后端服务器的请求头。proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
  3. proxy_connect_timeout: 设置连接后端服务器的超时时间。proxy_connect_timeout 60s;
  4. proxy_send_timeout: 设置向后端服务器发送请求的超时时间。proxy_send_timeout 60s;
  5. proxy_read_timeout: proxy_read_timeout 60s;
    • 设置读取后端服务器响应的超时时间。

SSL/TLS 配置

  1. ssl_certificate: 指定SSL证书文件。ssl_certificate /etc/nginx/ssl/nginx.crt;
  2. ssl_certificate_key: 指定SSL证书密钥文件。ssl_certificate_key /etc/nginx/ssl/nginx.key;
  3. ssl_protocols: 指定支持的SSL/TLS协议。ssl_protocols TLSv1.2 TLSv1.3;
  4. ssl_ciphers: 指定支持的加密算法。ssl_ciphers HIGH:!aNULL:!MD5;
  5. ssl_prefer_server_ciphers: 启用服务器首选加密算法。ssl_prefer_server_ciphers on;

虚拟主机配置

  1. server: 定义一个虚拟主机配置。server { listen 80; server_name example.com; location / { root /var/www/html; index index.html index.htm; } }
  2. listen: 指定服务器监听的端口和协议。listen 443 ssl;server_name example.com;root /var/www/html;index index.html index.htm;安全配置1、limit_req_zone: 设置速率限制区域。http { limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; }2、 limit_req: 应用速率限制规则。server { location /api/ { limit_req zone=mylimit burst=5 nodelay; } }
  3. server_name: 指定虚拟主机的域名。
  4. root: 设置网站的根目录。
  5. index: 设置默认的主页文件。
  6. deny: 拒绝特定IP地址的访问。location / { deny 192.168.1.1; allow all; }
  7. allow: 允许特定IP地址的访问。location / { allow 192.168.1.0/24; deny all; }
  8. auth_basic: 启用基本HTTP认证。location /secure/ { auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd; }

其他有用的配置

  1. rewrite: 配置URL重写规则。location /old-path/ { rewrite ^/old-path/(.*)$ /new-path/$1 permanent; }
  2. return: 配置返回特定的HTTP状态码和页面。location / { return 404; }
  3. try_files: 尝试按照顺序找到文件。location / { try_files $uri $uri/ =404; }
  4. gzip: 启用Gzip压缩。gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
  5. expires: 设置缓存控制头。location / { expires 30d; }

完整的 NGINX 配置示例

代码语言:shell
AI代码解释
复制
user www-data;
worker_processes auto;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
}

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

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log warn;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    server {
        listen 80;
        server_name example.com;
        root /var/www/html;
        index index.html index.htm;

        location / {
            try_files $uri $uri/ =404;
        }

        location /api/ {
            limit_req zone=mylimit burst=5 nodelay;
            proxy_pass http://localhost:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nginx配置文件nginx.conf全解
nginx配置文件nginx.conf的配置http、upstream、server、location等;
青山师
2023/05/05
8610
深入解析Nginx配置文件
Nginx是一款高性能的HTTP和反向代理服务器,广泛应用于各类Web服务器。作为一名测试工程师,了解Nginx配置文件的细节有助于更好地进行测试和优化服务器性能。本文将详细介绍Nginx配置文件的结构及其主要配置项。
霍格沃兹测试开发Muller老师
2024/06/19
2.8K0
Nginx通过https方式反向代理的简单实现
1)nginx的反向代理:proxy_pass 2)nginx的负载均衡:upstream 下面是nginx的反向代理和负载均衡的实例: 负载机:A机器:103.110.186.8/192.168.1.8 后端机器1:B机器:192.168.1.102 后端机器2:C机器:192.168.1.103 需求: 1)访问A机器的8080端口,反向代理到B机器的8080端口; 访问A机器的8088端口,反向代理到C机器的8088端口; 访问http://103.110.86.8:8090/io
洗尽了浮华
2018/01/22
8.2K0
Nginx 极简教程,一看就会!
Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
用户6543014
2019/10/25
5800
Nginx 极简教程,一看就会!
nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案。nginx可以用轮询、IP哈希、URL哈希等方式调度后端服务器,同时也能提供健康检查功能。目前有众多公司均已经部署使用nginx实现基于七层的负载均衡功能。 1)Nginx负载均衡 为了实现Nginx的反向代理以及负载均衡功能,应用中需要用到两个模块,HttpProxyModule和HttpUpstreamModule模块;其中HttpProxyModule模块的作用是将用户的数据请求转发到其他服
洗尽了浮华
2018/01/23
8.2K0
nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx反向代理+负载均衡简单实现(https方式)
背景: A服务器(192.168.1.8)作为nginx代理服务器 B服务器(192.168.1.150)作为后端真实服务器 现在需要访问https://testwww.huanqiu.com请求时从A服务器上反向代理到B服务器上 这就涉及到nginx反向代理https请求的配置了~~~ ------------------------------------------------------------------------------------ A服务器(192.168.1.8)上的操作流程: 1
洗尽了浮华
2018/01/22
3K0
nginx简易教程
Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
lyb-geek
2018/07/26
1K0
nginx简易教程
nginx简易教程
nginx简易教程 概述 什么是nginx? Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 什么是反向代理? 反向代理(
静默虚空
2018/01/05
1.6K0
nginx简易教程
基于CentOS 7配置Nginx反向代理
Nginx作为反向代理服务器被广泛使用在各大互联网企业。它简单易用,可以根据业务的需求将其不同的业务类型代理至不同的服务器,将整个站点请求压力按类型分摊到不同的服务器。该方式使的整个站点请求性能得以极大的提升。本文简要描述了Nginx几种不同情形的代理演示,供大家参考。
Leshami
2018/08/06
2.2K0
基于CentOS 7配置Nginx反向代理
Nginx
刚开始做这个网站的时候,只有一个定时任务jar包,每天定时给指定用户发短信,后来觉得其他人可能也需要这种服务,在其基础上二次开发,可扩展多任务,多用户定时任务,赚了一点点,这时候已经是部署在tomcat上了,端口占用80; 后来想自己做博客,但是博客想要使用主域名,即原服务需要修改端口,但是这种形式容易忘记端口,还需要去防火墙重新放开一个端口,想的是一个二级域名可以直接访问,这时候想到Nginx!
不期而遇丨
2022/09/09
5400
nginx配置详解
nginx大家都听说过吧,我就不详细介绍了。我这里就列一下,nginx中nginx.conf配置文件每个配置项的详细解释。
业余草
2019/01/21
1.2K0
Nginx-正反向代理及负载均衡
目录 正/反向代理 代理的方式 Nginx代理服务支持的协议 代理实战 部署web01 部署Lb01 Nginx代理常用参数 添加发往后端服务器的请求头信息 代理到后端的TCP连接、响应、返回等超时时间 proxy_buffer代理缓冲区 配置代理优化文件 负载均衡 负载均衡的架构 负载均衡的实现 连接池 实现步骤 负载均衡的比例 轮询 权重 ip_hash 负载均衡后端状态 down backup max_fails、fail_timeout proxy_next_upstream监控的错误类型 负载均衡
HammerZe
2022/03/25
5460
Nginx-正反向代理及负载均衡
Nginx 常用实践
Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是,Nginx 是免费的并可以商业化,配置使用也比较简单。
默存
2023/09/01
3770
Nginx 常用实践
nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能。 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)
洗尽了浮华
2018/01/22
3.4K0
nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
谷粒商城Nginx代理网关
首先需要在C:\Windows\System32\drivers\etc中的host文件下加入
一个风轻云淡
2023/10/15
4090
nginx常用配置
proxy_redirect 该指令用来修改被代理服务器返回的响应头中的Location头域和“refresh”头域。
章工运维
2023/05/19
9920
Nginx实例与localtion匹配规则
〇、官方手册 一、反向代理 docker run --name nginx -d -p 80:80 -v /nginx/html:/usr/share/nginx/html -v /nginx/nginx.conf:/etc/nginx/nginx.conf nginx 下面为容器的端口!!!!!! # 运行用户 #user nobody; # 启动进程,通常设置成和cpu数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.lo
wuweixiang
2019/03/12
9970
使用Nginx实现高效集群部署:前端与多个后端服务的完美结合
大家好,我是默语,擅长全栈开发、运维和人工智能技术。在本篇博客中,我将分享如何使用Nginx进行集群部署。这篇文章不仅适合新手学习,还能帮助有经验的开发者优化他们的部署架构。关键词:Nginx、集群部署、负载均衡、后端分发。
默 语
2024/11/22
1.5K0
Nginx-基础总结(上)
1.proxy_set_header :在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息。 2.proxy_connect_timeout:配置Nginx与后端代理服务器尝试建立连接的超时时间。 3.proxy_read_timeout : 配置Nginx向后端服务器组发出read请求后,等待相应的超时时间。 4.proxy_send_timeout:配置Nginx向后端服务器组发出write请求后,等待相应的超时时间。 5.proxy_redirect :用于修改后端服务器返回的响应头中的Location和Refresh。
云计算小黑
2022/12/28
4910
Nginx的安装部署以及使用
nginx是现在互联上非常流行的高性能的 Web 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
星哥玩云
2022/07/28
9930
相关推荐
Nginx配置文件nginx.conf全解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档