博客
关于我
Nginx实战之1.1-1.6 Nginx介绍,安装及配置文件详解
阅读量:792 次
发布时间:2023-02-15

本文共 3713 字,大约阅读时间需要 12 分钟。

Nginx是高性能的HTTP和反向代理服务器,也是一种IMAP/POP3邮件代理服务器,支持热部署、负载均衡、虚拟主机和SSL。以下是关于Nginx配置文件详解的内容。

Nginx配置文件结构

Nginx的主配置文件通常位于/etc/nginx/nginx.conf,在源码包编译后位于/usr/local/nginx/conf/nginx.conf。以下是配置文件的主要部分和结构:

全局配置

  • user nobody nobody;:定义运行Nginx服务的用户和组。
  • worker_processes 2;:定义Nginx子进程数量,建议与CPU核数保持一致。
  • error_log /usr/local/nginx/logs/nginx_error.log crit;:定义错误日志路径和级别。
  • pid /usr/local/nginx/logs/nginx.pid;:定义Nginx进程ID文件路径。
  • worker_rlimit_nofile 51200;:定义Nginx最多打开文件数限制。

事件配置

  • events { use epoll; worker_connections 1024; }:定义事件驱动模型和最大连接数。

HTTP配置

  • include mime.types;:包含媒体类型文件。
  • default_type application/octet-stream;:默认媒体类型。
  • sendfile on;:启用sendfile功能,提升性能。
  • tcp_nopush on;:优化网络传输。
  • keepalive_timeout 30;:定义HTTP/1.1会话超时。
  • client_max_body_size 10m;:限制客户端上传文件大小。
  • gzip on;:启用Gzip压缩。
  • gzip_min_length 1k;:定义Gzip压缩的最小文件大小。
  • gzip_comp_level 6;:定义Gzip压缩级别。

服务器配置

  • server { listen 80; server_name localhost; }:定义虚拟主机,监听80端口。
  • location / { root /usr/local/nginx/html; index index.html index.htm; }:定义默认访问路径和索引文件。
  • location ~ .php$ { proxy_pass http://127.0.0.1:9000; }:代理PHP脚本请求到PHP-FPM服务器。

高级配置

  • fastcgi_intercept_errors on;:捕获PHP错误并返回友好响应。
  • sendfile_max_chunk 128k;:定义sendfile传输最大块大小。
  • client_header_buffer_size 1k;:定义HTTP头缓冲大小。

配置文件解释

  • 全局配置

    • user nobody nobody;:设置Nginx运行的用户和组,通常为nginx用户和组。
    • worker_processes 2;:根据服务器负载调整子进程数量,建议与CPU核数一致。
    • error_log /usr/local/nginx/logs/nginx_error.log crit;:设置错误日志路径和级别,crit级别记录关键错误。
    • pid /usr/local/nginx/logs/nginx.pid;:指定Nginx进程ID文件路径。
  • 事件配置

    • events { use epoll; worker_connections 1024; }:使用epoll事件驱动模型,允许最多1024个连接。
  • HTTP配置

    • include mime.types;:包含系统默认的媒体类型文件,定义服务器支持的文件类型。
    • default_type application/octet-stream;:默认媒体类型为application/octet-stream
    • sendfile on;:启用sendfile功能,减少用户态和内核态切换,提升性能。
    • tcp_nopush on;:在发送数据时使用tcp_cork方法,减少网络阻塞。
    • keepalive_timeout 30;:定义HTTP/1.1会话超时,30秒为常见设置。
    • client_max_body_size 10m;:限制客户端上传文件大小,避免413错误。
    • gzip on;:启用客户端Gzip压缩,提升数据传输效率。
    • gzip_min_length 1k;:定义Gzip压缩的最小文件大小,避免小文件压缩。
    • gzip_comp_level 6;:定义Gzip压缩级别,6为常见设置,兼顾压缩率和速度。
  • 服务器配置

    • server { listen 80; server_name localhost; }:定义虚拟主机,监听80端口,域名为localhost
    • location / { root /usr/local/nginx/html; index index.html index.htm; }:定义默认访问路径,根目录为/usr/local/nginx/html,索引文件为index.htmlindex.htm
    • location ~ .php$ { proxy_pass http://127.0.0.1:9000; }:定义PHP脚本代理,代理到本地PHP-FPM服务器,端口为9000。
  • 高级配置

    • fastcgi_intercept_errors on;:在代理PHP请求时,捕获错误信息并返回友好响应,避免502错误页。
    • sendfile_max_chunk 128k;:定义sendfile传输的最大块大小,建议根据网络带宽调整。
    • client_header_buffer_size 1k;:定义HTTP头部缓冲大小,避免缓存问题。
  • 配置文件示例

    以下是一个示例的Nginx配置文件:

    user nobody nobody;worker_processes 2;error_log /usr/local/nginx/logs/nginx_error.log crit;pid /usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 51200;events {    use epoll;    worker_connections 1024;}http {    include mime.types;    default_type application/octet-stream;    sendfile on;    tcp_nopush on;    keepalive_timeout 30;    client_max_body_size 10m;    gzip on;    gzip_min_length 1k;    gzip_comp_level 6;    server {        listen 80;        server_name localhost;        location / {            root /usr/local/nginx/html;            index index.html index.htm;        }        location ~ .php$ {            proxy_pass http://127.0.0.1:9000;        }        error_page 404 /404.html;        error_page 500 502 503 504 /50x.html;        location /50x.html {            root /usr/local/nginx/html;        }        # 其他配置...    }}

    常见优化

  • 日志配置

    • 修改error_log级别,error_log /usr/local/nginx/logs/nginx_error.log debug;以获取更多日志信息。
  • 性能优化

    • 增加worker_rlimit_nofile,根据系统内存调整文件限制。
    • 调整worker_connections,根据负载增加连接数。
  • 安全配置

    • 定义访问日志路径和限制访问权限,如access_log logs/access.log main;。-配置访问控制列表(ACL),限制某些IP访问。
  • 高级功能

    • 启用ngx_http_realip_module,配置反向代理IP。
    • 配置ngx_http_headers_module,自定义HTTP头。
  • 负载均衡

    • 使用proxy_balanceproxy_pass实现反向代理负载均衡。
  • 通过以上配置和优化,可以更好地实现Nginx的高性能和稳定性,适用于Web服务器、反向代理、邮件代理等场景。

    转载地址:http://ercfk.baihongyu.com/

    你可能感兴趣的文章
    Netty NIO transport && OIO transport
    查看>>
    Netty WebSocket客户端
    查看>>
    netty 主要组件+黏包半包+rpc框架+源码透析
    查看>>
    Netty 异步任务调度与异步线程池
    查看>>
    Netty 解决TCP粘包/半包使用
    查看>>
    netty——Future和Promise的使用 线程间的通信
    查看>>
    netty——黏包半包的解决方案、滑动窗口的概念
    查看>>
    Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息
    查看>>
    Netty中实现多客户端连接与通信-以实现聊天室群聊功能为例(附代码下载)
    查看>>
    Netty中的组件是怎么交互的?
    查看>>
    Netty中集成Protobuf实现Java对象数据传递
    查看>>
    netty之 定长数据流处理数据粘包问题
    查看>>
    Netty事件注册机制深入解析
    查看>>
    netty代理
    查看>>
    Netty入门使用
    查看>>
    netty入门,入门代码执行流程,netty主要组件的理解
    查看>>
    Netty原理分析及实战(一)-同步阻塞模型(BIO)
    查看>>
    Netty原理分析及实战(三)-高可用服务端搭建
    查看>>
    Netty原理分析及实战(二)-同步非阻塞模型(NIO)
    查看>>
    Netty原理分析及实战(四)-客户端与服务端双向通信
    查看>>