常见Nginx的中间件架构(一)

本文详细介绍了Nginx的优化配置方法,包括sendfile、tcp_nopush、tcp_nodelay、gzip压缩、expires缓存、跨域访问、防盗链等关键设置,帮助提升Web服务性能。

#一、静态资源Web服务

#文件读取
Syntax: sendfile on|off;
Default : sendfile off;
Context:http,server,location,if in location

#tcp_nopush配置语法
#作用:sendfile开启的情况下,提供网络包的传输效率
Syntax: tcp_nopush on|off;
Default : tcp_nopush off;
Context:http,server,location

#tcp_nodelay配置语法
#在keepalive连接下,提高网络包的传输实时性
Syntax: tcp_nodelay on|off;
Default : tcp_nodelay off;
Context:http,server,location

#gzip配置语法
#作用:压缩传输
Syntax: gzip on|off;
Default : gzip off;
Context:http,server,location,if in location
#压缩比
Syntax: gzip_comp_level level;
Default : gzip_comp_level level 1;
Context:http,server,location
#版本
Syntax: gzip_http_version 1.0|1.1;
Default : gzip_http_version 1.1;
Context:http,server,location

#例:
#location ~ .*\.(txt|xml) {
#         gzip on;
#        gzip_http_version 1.1;
#        gzip_comp_level 2;
#        root /opt/app/code/doc;
#    }


#拓展Nginx压缩模块
#http_gzip_static_module 预读gzip功能
#例:
#location ~ ^/download {
#    gzip_static on;
#    tcp_nopush on;
#    root /opt/app/code;
#    }

#---------------------------------------------------------------------

#浏览器缓存
#-expires配置语法
#添加Cache-Control、Expires头
Syntax: expires [modified] time;
        expires epoch | max | off;
Default : expires off;
Context:http,server,location,if in location

#例:
#location ~ .*\.(htm|html)$ {
#        expires 24h;
#        root  /opt/app/code;
#    }

#---------------------------------------------------------------------

#跨域访问
Syntax:add_header name value [always];
Default : ——;
Context:http,server,location,if in location

#例:
#location ~ .*\.(htm|html)$ {
#        add_header Access-Control-Allow-Origin *; 
#        add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
#        root  /opt/app/code;
#    }

#---------------------------------------------------------------------

#防盗链 防止网站资源被盗用
#http_refer防盗链配置模块
Syntax:valid_referers none|blocked|server_names|string ...;
Default : ——;
Context:server,location

#例:
# location ~ .*\.(jpg|gif|png)$ {
#                    允许没有代理  不允许非http     允许的ip...
#        valid_referers none blocked 116.62.103.228 jeson.imoocc.com ~wei\.png;
#        if ($invalid_referer) {
#            return 403;
#        }
#        root  /opt/app/code/images;
#    }

### Nginx 中间件面试常见问题解析 #### 1. Nginx 的基础架构与工作原理 Nginx 采用事件驱动的异步非阻塞架构,能够高效处理高并发请求。其核心模块包括 HTTP 模块、事件模块、邮件模块等。Nginx 通过 master-worker 模型管理进程,其中 master 进程负责管理 worker 进程,而 worker 进程则负责处理具体的网络请求。这种架构使得 Nginx 能够充分利用多核 CPU 资源,提升性能。 ```nginx worker_processes auto; events { worker_connections 1024; } ``` 该配置展示了如何设置 worker 进程数量以及每个 worker 可处理的最大连接数,体现了 Nginx 的并发处理能力[^1]。 #### 2. 反向代理与负载均衡 Nginx 常用于实现反向代理与负载均衡,其通过 `upstream` 模块定义后端服务器组,并结合 `proxy_pass` 指令实现请求转发。常见的负载均衡算法包括轮询(默认)、加权轮询、最少连接数(least_conn)、IP 哈希(ip_hash)等。 ```nginx upstream backend { least_conn; server 127.0.0.1:8080 weight=3; server 127.0.0.1:8081; } server { listen 80; location / { proxy_pass http://backend; } } ``` 上述配置展示了如何使用最少连接数算法进行负载均衡,并通过 `weight` 参数实现加权轮询[^1]。 #### 3. 静态资源服务与缓存机制 Nginx 可以高效地处理静态资源请求,如 HTML、CSS、JS、图片等。通过配置 `location` 块,可以定义静态资源的根目录,并结合 `expires` 指令设置缓存策略,提升页面加载速度。 ```nginx location ~ \.(jpg|jpeg|png|gif|ico|css|js)$ { root /data/static; expires 30d; add_header Cache-Control "public, no-transform"; } ``` 此配置通过设置 `expires` 和 `Cache-Control` 头部,实现浏览器缓存控制,减少服务器负载[^1]。 #### 4. 安全性与访问控制 Nginx 提供多种安全机制,包括 IP 白名单、Basic Auth、限制请求方法等。例如,使用 `allow` 和 `deny` 指令可以限制特定 IP 地址的访问权限,而 `auth_basic` 指令则可以实现基于用户名和密码的认证。 ```nginx location /admin { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; allow 192.168.1.0/24; deny all; } ``` 该配置结合了 Basic Auth 和 IP 白名单,增强后台管理接口的安全性[^1]。 #### 5. 高级功能与性能调优 Nginx 支持 SSL/TLS 加密、WebSocket、HTTP/2、Gzip 压缩等高级功能。此外,通过调整 `keepalive`、`sendfile`、`tcp_nopush`、`tcp_nodelay` 等参数,可以进步优化网络传输性能。 ```nginx http { gzip on; gzip_types text/plain application/json; keepalive_timeout 65; sendfile on; tcp_nopush on; tcp_nodelay off; } ``` 上述配置启用了 Gzip 压缩、保持连接、零拷贝传输等优化策略,提升传输效率[^1]。 ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值