首页 > 系统相关 >Nginx 配置文件说明

Nginx 配置文件说明

时间:2024-08-27 11:06:47浏览次数:10  
标签:certificate 配置文件 示例 server 说明 Nginx nginx gzip ssl

1. 全局配置

这些配置通常位于配置文件的最顶部,影响整个 NGINX 的行为。

  • worker_processes:

    • 作用:指定 NGINX 进程的数量。建议设置为服务器 CPU 核心的数量以提高性能。
    • 示例:worker_processes 1;
  • error_log:

    • 作用:指定错误日志文件的位置和日志级别(如 debug, info, notice, warn, error)。
    • 示例:error_log /var/log/nginx/error.log warn;
  • pid:

    • 作用:指定保存 NGINX 进程 ID 的文件。
    • 示例:pid /var/run/nginx.pid;

2. 事件配置

这些配置影响 NGINX 处理连接的方式。

  • worker_connections:
    • 作用:指定每个工作进程可以处理的最大连接数。
    • 示例:worker_connections 1024;

3. HTTP 模块

用于配置 HTTP 服务器相关的选项。

  • include:

    • 作用:包含外部文件或配置,例如 MIME 类型配置文件。
    • 示例:include mime.types;
  • default_type:

    • 作用:设置默认的 MIME 类型,用于无法识别的文件。
    • 示例:default_type application/octet-stream;
  • sendfile:

    • 作用:开启或关闭 sendfile 系统调用,提高静态文件的传输效率。
    • 示例:sendfile on;
  • keepalive_timeout:

    • 作用:指定客户端连接在空闲状态下保持连接的时间(秒)。
    • 示例:keepalive_timeout 65;
  • client_max_body_size:

    • 作用:指定客户端请求的最大请求体大小。用于限制上传文件的大小。
    • 示例:client_max_body_size 20M;
  • gzip:

    • 作用:启用或禁用 gzip 压缩,减少传输的数据量。
    • 示例:gzip on;
  • gzip_types:

    • 作用:指定要压缩的 MIME 类型。
    • 示例:gzip_types text/plain text/css application/json application/javascript;
  • map:

    • 作用:用于将变量的值映射到另一个变量。常用于复杂的条件判断。
    • 示例:
      map $http_upgrade $connection_upgrade {
          default upgrade;
          ''      close;
      }
      

4. Server 块

用于定义虚拟服务器,可以根据域名、IP 地址或端口进行匹配。

  • listen:

    • 作用:指定服务器监听的端口和协议。
    • 示例:listen 80;listen 443 ssl;
  • server_name:

    • 作用:指定虚拟主机名。可以使用多个主机名,或使用通配符。
    • 示例:server_name example.com www.example.com;
  • ssl_certificate:

    • 作用:指定 SSL 证书文件的位置。
    • 示例:ssl_certificate /etc/nginx/certs/ssl_certificate.crt;
  • ssl_certificate_key:

    • 作用:指定 SSL 证书私钥的位置。
    • 示例:ssl_certificate_key /etc/nginx/certs/ssl_certificate.key;
  • location:

    • 作用:定义如何处理特定的 URI 请求。
    • 示例:
      location / {
          root /var/www/html;
          index index.html;
      }
      
  • proxy_pass:

    • 作用:将请求转发到其他服务器或应用。
    • 示例:proxy_pass http://backend_server;

5. SSL 配置

配置 HTTPS 相关选项,确保安全通信。

  • ssl_ciphers:

    • 作用:指定支持的 SSL/TLS 加密套件。
    • 示例:ssl_ciphers HIGH:!aNULL:!MD5;
  • ssl_protocols:

    • 作用:指定支持的 SSL/TLS 协议版本。
    • 示例:ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  • ssl_prefer_server_ciphers:

    • 作用:启用此选项后,服务器将优先选择它自己的加密算法,而非客户端首选的。
    • 示例:ssl_prefer_server_ciphers on;

6. 生成 SSL 证书的基本步骤

  1. 生成私钥:openssl genpkey -algorithm RSA -out ssl_certificate.key
  2. 生成证书签名请求 (CSR):openssl req -new -key ssl_certificate.key -out ssl_certificate.csr
  3. 使用 CSR 生成自签名证书:openssl x509 -req -days 365 -in ssl_certificate.csr -signkey ssl_certificate.key -out ssl_certificate.crt

7. 常用的 NGINX 命令

  • 启动 NGINX: nginx
  • 停止 NGINX: nginx -s stop
  • 平滑重启 NGINX: nginx -s reload
  • 测试配置文件: nginx -t

8. 示例配置

# 全局配置
worker_processes 1;  # 指定工作进程的数量,通常设为 CPU 核心数

error_log /var/log/nginx/error.log warn;  # 指定错误日志的位置和日志级别
pid /var/run/nginx.pid;  # 指定保存 NGINX 进程 ID 的文件

# 事件配置
events {
    worker_connections 1024;  # 每个工作进程最大连接数
}

# HTTP 模块配置
http {
    include mime.types;  # 包含 MIME 类型配置文件
    default_type application/octet-stream;  # 默认 MIME 类型

    sendfile on;  # 启用高效的文件传输
    tcp_nopush on;  # 启用 TCP_NOPUSH 选项,优化大文件传输
    tcp_nodelay on;  # 启用 TCP_NODELAY 选项,减少延迟

    keepalive_timeout 65;  # 设置客户端连接保持的超时时间(秒)

    client_max_body_size 20M;  # 限制客户端请求体的最大尺寸
    client_body_buffer_size 128k;  # 设置客户端请求体缓冲区大小

    proxy_buffer_size 64k;  # 设置代理缓冲区大小
    proxy_buffers 32 64k;  # 设置代理缓存区的数量和大小
    proxy_busy_buffers_size 128k;  # 设置忙碌缓存区的大小

    gzip on;  # 启用 gzip 压缩
    gzip_http_version 1.1;  # 指定支持 gzip 压缩的 HTTP 协议版本
    gzip_vary on;  # 启用 Vary 头部,以便缓存代理根据 gzip 进行内容变更
    gzip_comp_level 6;  # 设置 gzip 压缩级别(1-9)
    gzip_proxied any;  # 启用对所有代理请求的 gzip 压缩
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;  # 指定需要 gzip 压缩的 MIME 类型

    map $http_upgrade $connection_upgrade {
        default upgrade;  # 支持 WebSocket 升级
        ''      close;  # 关闭连接
    }

    # 服务器配置
    server {
        listen 80;  # 监听 HTTP 80 端口
        server_name example.com www.example.com;  # 设定虚拟主机名

        root /var/www/html;  # 设置网站根目录
        index index.html index.htm;  # 设置默认首页文件

        location / {
            try_files $uri $uri/ =404;  # 尝试访问文件或目录,若未找到则返回 404
        }

        location /images/ {
            root /var/www/images;  # 配置图片目录
        }
    }

    # SSL 配置
    server {
        listen 443 ssl;  # 监听 HTTPS 443 端口
        server_name secure.example.com;  # 设置 HTTPS 主机名

        ssl_certificate /etc/nginx/certs/ssl_certificate.crt;  # 设置 SSL 证书路径
        ssl_certificate_key /etc/nginx/certs/ssl_certificate.key;  # 设置 SSL 证书私钥路径
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  # 配置 SSL 加密套件
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  # 启用的 SSL/TLS 协议版本
        ssl_prefer_server_ciphers on;  # 优先使用服务器配置的加密算法

        location / {
            root /var/www/secure;  # 设置 HTTPS 目录
            index index.html index.htm;  # 设置默认首页文件
        }
    }

    # 代理配置
    server {
        listen 8080;  # 监听 HTTP 8080 端口
        server_name proxy.example.com;  # 设置代理主机名

        location /api/ {
            proxy_pass http://backend_server;  # 将请求转发到后端服务器
            proxy_set_header Host $host;  # 设置请求头中的主机名
            proxy_set_header X-Real-IP $remote_addr;  # 设置客户端真实 IP
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 设置代理链中的客户端 IP
        }
    }
}

标签:certificate,配置文件,示例,server,说明,Nginx,nginx,gzip,ssl
From: https://www.cnblogs.com/daikaiqiang/p/18382262

相关文章

  • Nginx实现文件下载
    安装nginx可看我的另一篇文章:http://t.csdnimg.cn/tjRLA1,创建存储下载文件的路径路径自己根据需求设置mkdir-p/data/download/app2,对文件夹授权chmod755/data/download/app3,修改nginx配置文件vim/data/nginx/conf/nginx.conf注意这里使用:alias,不要用root,不然会......
  • NGINX 配置
    1.NGINX基础配置1.1NGINX安装在Linux系统上安装NGINX可以使用包管理工具,例如在Ubuntu上:sudoaptupdatesudoaptinstallnginx安装完成后,启动NGINX服务:sudosystemctlstartnginx1.2NGINX基本配置文件NGINX的主配置文件通常位于/etc/nginx/nginx.conf......
  • ThinkPHP 6 + PHP7.4.3nts +nginx 使用mysql和oracle数据库
    ThinkPHP6+PHP7.4.3nts+nginx使用mysql和oracle数据库.前言业务需求,之前使用的php7.3.4nts,mysql自己写的代码,需要对接第三方系统,第三方使用的oracle数据库。之前也是各种的网查,稀里糊涂的成功了。上周五又需要对接,这次用的是php7.4.3nts,各种试了两三天不行,昨晚就突然可以......
  • Tomcat的配置文件中有哪些关键的配置项,它们分别有什么作用?
    Tomcat的配置文件主要包括server.xml和web.xml,它们位于Tomcat安装目录下的conf文件夹中。今天的内容重点介绍server.xml文件的配置,V哥会结合一些业务场景来介绍,希望可以帮助到你,以下是一些关键的配置项及其作用:server.xml中的配置项:<Server>:根元素,定义了Tomcat服务器的配......
  • java一键生成数据库说明文档html格式
    要验收项目了,要写数据库文档,一大堆表太费劲了,直接生成一个吧,本来想用个别人的轮子,网上看了几个,感觉效果不怎么好,自己动手写一个吧。抽空再把字典表补充进去就OK了先看效果:目录快速导航生成效果关键代码try{ StringprefixTables="sys_monitor_db_ha......
  • Nginx加载Lua环境
    Nginx加载Lua环境开源配置也可以直接部署春哥的开源项⽬OpenResty:http://openresty.org/cn/#安装依赖包[root@linuxprobe]#yuminstall-yreadline-develpcre-developenssl-devel[root@linuxprobe]#cd/soft/src#下载并编译安装openresty[root@linuxprobesrc]#......
  • Nginx+Lua实现WAF应⽤防⽕墙
    Nginx+Lua实现WAF应⽤防⽕墙1.常⻅的恶意⾏为爬⾍⾏为和恶意抓取,资源盗取防护⼿段1.基础防盗链功能不让恶意⽤户能够轻易的爬取⽹站对外数据2.access_moudle->对后台,部分⽤户服务的数据提供IP防护解决⽅法192.168.1.170[[email protected]]#cat/soft/openre......
  • Nginx+Lua实现代码灰度发布
    Nginx+Lua实现代码灰度发布使⽤Nginx结合lua实现代码灰度发布灰度发布是⼀种将新版本的软件或功能逐步推⼴给⼀⼩部分⽤户,以进⾏测试和评估它们的反应的⽅法。实际上,它是⼀种渐进式的部署⽅法,可以逐步将新版本或功能逐步发布给不同的⽤户群体,直到所有⽤户都可以使⽤这个新......
  • 【从头写CAD】 转换矩阵类系列一,总说明及泛型类
    /*矩阵类编程思路总说明:平面CAD对象主要包括点(point)、线(line含线段、直线、射线,宽线、多段线)、平面形状(shap含矩形、圆形、椭圆、文字、图块实体、外部参照实体及各种标注等)。我们先用点(point)来说明矩阵功能。点(P),可以用向量(1,x,y)表示。一、如果点发生平移......
  • 如何彻底卸载nginx
    彻底卸载Nginx包括删除Nginx软件包及其相关配置文件和目录。以下是针对不同操作系统的彻底卸载步骤:###1.在Ubuntu/Debian系统上1.**停止Nginx服务**:   ```bash   sudosystemctlstopnginx   ```2.**卸载Nginx软件包**:   ```bash   sudoapt-g......