分类 Nginx 下的文章


# 全局配置块
user www www; # 运行Nginx进程的用户和组
worker_processes auto; # worker工作进程数 Nginx进程自动监测

error_log /data/wwwlogs/error_nginx.log crit; # 错误日志
pid /var/run/nginx.pid;                       # PID文件
worker_rlimit_nofile 51200;

# 网络事件模块
events
{
   use epoll; # 使用epoll
   accept_mutex on; # 防止惊群问题的产生
   worker_connections 51200; # 每个worker进程允许的同时最大连接数 与Linux中进程可打开的文件句柄数有关系
   multi_accept on; # worker process 同时可接收多个新到达的网络连接
 }
 
# HTTP模块
http
{
   include mime.types;
   default_type application/octet-stream;
   server_names_hash_bucket_size 128;
   client_header_buffer_size 32k;          # 设置Nginx服务器允许的客户端的请求头的缓冲区大小
   large_client_header_buffers 4 32k;
   client_max_body_size 1024m;
   client_body_buffer_size 10m;
   sendfile on;   # 使用sendfile()传输文件
   tcp_nopush on;  # 连接超时时间
   keepalive_timeout 120;
   keepalive_requests 10; # 用户通过某一连接向nginx服务器发送请求的次数
   server_tokens off;
   tcp_nodelay on;

   fastcgi_connect_timeout 300;
   fastcgi_send_timeout 300;
   fastcgi_read_timeout 300;
   fastcgi_buffer_size 64k;
   fastcgi_buffers 4 64k;
   fastcgi_busy_buffers_size 128k;
   fastcgi_temp_file_write_size 128k;
   fastcgi_intercept_errors on;


   # Gzip压缩
   gzip on;             # 开启Gzip压缩
   gzip_buffers 16 8k;  # 缓冲区大小 16个大小为8k的缓冲空间
   gzip_comp_level 6;   # 压缩级别 1-9 随着级别的增加,压缩效率会降低
   gzip_http_version 1.1;  # 针对不同的HTTP协议版本,选择性开启或关闭Gzip功能 该指令用于设置开启功能需要的最低协议版本
   gzip_min_length 256;   # 表示在数据大小为256k及以上时,才会启用Gzip压缩
   gzip_proxied any;      # 在反向代理场景下有效,设置是否对后端服务器返回的结果进行压缩 any表示无条件启用
   gzip_vary on;          # 是否发送`vary: Accept-Encoding`头域的响应头部
   gzip_types             # 根据响应页的MIME类型选择性开启Gzip压缩
     text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
     text/javascript application/javascript application/x-javascript
     text/x-json application/json application/x-web-app-manifest+json
     text/css text/plain text/x-component
     font/opentype application/x-font-ttf application/vnd.ms-fontobject
     image/x-icon;
   gzip_disable "MSIE [1-6]\.(?!.*SV1)";   # 针对不同种类的客户端请求,可以选择性的开启或关闭Gzip功能 根据UA标识

  # 虚拟主机配置
  server
  {
      listen 443 ssl;               # 会话连接使用ssl模式
      server_name blog.feanmy.com;  # 虚拟主机的名称,即对外访问的域名,多个名称以空格隔开,支持通配符和正则表达式

      # server_name 匹配优先级
      # 匹配方式不同按以下优先级:1.准确匹配 2.通配符在开始处匹配 3.通配符在结尾处匹配 4.正则表达式匹配
      # 如果被同一优先级的匹配方式多次匹配成功,则首次匹配成功的会处理请求


      root /data/wwwroot/blog;                   # 配置请求根目录
      access_log /data/wwwlogs/access_blog.log;

      include  /usr/local/nginx/conf/enable-php-74.conf;
    
      index index.html index.htm index.php;      # 设置网站默认页

      error_page 404 /404.html;                  # 错误页

      charset utf-8;

      ssl_certificate      /etc/letsencrypt/live/feanmy.com/fullchain.pem;
      ssl_certificate_key  /etc/letsencrypt/live/feanmy.com/privkey.pem;

      resolver 8.8.8.8 8.8.4.4 1.1.1.1;

      # location匹配规则
      # `=`: 请求字符串与URI严格匹配,如果匹配成功,停止继续向下搜索,并立即处理请求
      # `~`: 表示URI包含正则表达式,且区分大小写
      # `~*`: 表示URI包含正则表达式,且不区分大小写
      # 如果URI包含正则表达式,必须使用`~`或`~*`标识
      # `^~`: nginx服务器找到标识URI和请求字符串匹配度最高的location后,立即使用此location处理请求

      location /
      {
          try_files $uri $uri/ /index.php?$query_string;
      }

      location = /favicon.ico { access_log off; log_not_found off; }
      location = /robots.txt  { access_log off; log_not_found off; }

      error_page 404 /index.php;

      location ~ \.php$
      {
          fastcgi_pass 127.0.0.1:9000;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
          include fastcgi_params;
      }
  }

  server
  {
      listen 80;       # 监听ipv4 80端口
      listen [::]:80;  # 监听ipv6 80端口
      server_name blog.feanmy.com;
    
      location /
      {
          return 301 https://$server_name$request_uri;
      }

      location /.well-know/
      {
          add_header Content-Type 'text/plain';
          root /data/wwwroot/blog;
      }
  }
}