目 录CONTENT

文章目录

NGINX配置文件分析

Rho
Rho
2023-10-23 / 0 评论 / 0 点赞 / 33 阅读 / 5198 字
# 1. nginx配置文件分析
user  www www;  # 设置Nginx运行时的用户及用户组

worker_processes auto;  # 根据可用的CPU核心数自动设置worker进程数

error_log  /www/wwwlogs/nginx_error.log  crit;  # 定义错误日志的路径和级别

pid        /www/server/nginx/logs/nginx.pid;  # 定义Nginx主进程的pid文件路径

worker_rlimit_nofile 51200;  # 定义每个worker进程能够打开的最大文件描述符数

stream {  # 定义TCP/UDP服务的配置块
    log_format tcp_format '$time_local|$remote_addr|$protocol|$status|$bytes_sent|$bytes_received|$session_time|$upstream_addr|$upstream_bytes_sent|$upstream_bytes_received|$upstream_connect_time';
    # 定义stream日志格式,记录时间、客户端地址、传输协议、响应状态、发送字节数、接收字节数、会话时间、上游服务器地址、上游发送字节数、上游接收字节数、上游连接时间

    access_log /www/wwwlogs/tcp-access.log tcp_format;  # 定义TCP/UDP服务的访问日志路径及日志格式
    error_log /www/wwwlogs/tcp-error.log;  # 定义TCP/UDP服务的错误日志路径
    include /www/server/panel/vhost/nginx/tcp/*.conf;  # 包含指定目录下的TCP/UDP服务配置文件
}

events {  # 定义Nginx事件模块的配置块
    use epoll;  # 使用epoll作为事件模型
    worker_connections 51200;  # 定义每个worker进程的最大连接数
    multi_accept on;  # 开启批量接收连接请求
}

http {  # 定义HTTP服务的配置块
    # 配置FastCGI相关参数
    fastcgi_cache_key "$scheme$request_method$host$request_uri";
    fastcgi_cache_path /dev/shm/nginx-cache/wp levels=1:2 keys_zone=WORDPRESS:100m inactive=60m max_size=1g;
    fastcgi_cache_use_stale error timeout invalid_header http_500;
    fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

    include       mime.types;  # 包含MIME类型映射配置
    include proxy.conf;  # 包含代理配置文件

    default_type  application/octet-stream;  # 设置默认的文件类型

    server_names_hash_bucket_size 512;  # 设置服务器名哈希表的大小
    client_header_buffer_size 32k;  # 设置接收请求头的缓冲区大小
    large_client_header_buffers 4 32k;  # 设置接收请求头的缓冲区个数和每个缓冲区的大小
    client_max_body_size 50m;  # 设置客户端请求体的最大大小

    sendfile   on;  # 启用零拷贝传输文件
    tcp_nopush on;  # 开启TCP的Nagle算法

    keepalive_timeout 60;  # 定义连接保持时间

    tcp_nodelay on;  # 开启TCP的延迟确认算法

    fastcgi_connect_timeout 300;  # 定义与FastCGI进程建立连接的超时时间
    fastcgi_send_timeout 300;  # 定义发送请求到FastCGI进程的超时时间
    fastcgi_read_timeout 300;  # 定义从FastCGI进程读取响应的超时时间
    fastcgi_buffer_size 64k;  # 定义FastCGI缓冲区的大小
    fastcgi_busy_buffers_size 128k;  # 定义FastCGI繁忙缓冲区的大小
    fastcgi_buffers 4 64k;  # 定义FastCGI缓冲区个数和每个缓冲区的大小
    fastcgi_temp_file_write_size 256k;  # 定义FastCGI临时文件写入大小
    fastcgi_intercept_errors on;  # 开启FastCGI拦截错误

    gzip on;  # 开启gzip压缩
    gzip_min_length  1k;  # 设置启用gzip压缩的最小文件大小
    gzip_buffers     4 16k;  # 设置进行gzip压缩的缓冲区个数和每个缓冲区的大小
    gzip_http_version 1.1;  # 设置支持gzip压缩的HTTP协议版本
    gzip_comp_level 2;  # 设置gzip压缩级别
    gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;  # 设置支持gzip压缩的文件类型
    gzip_vary on;  # 启用Vary头部用于区分是否支持gzip压缩
    gzip_proxied   expired no-cache no-store private auth;  # 设置启用gzip压缩的条件
    gzip_disable   "MSIE [1-6]\.";  # 设置禁用gzip压缩的条件

    limit_conn_zone $binary_remote_addr zone=perip:10m;  # 设置限制每个IP地址的并发连接数
    limit_conn_zone $server_name zone=perserver:10m;  # 设置限制每个服务器名的并发连接数

    server_tokens off;  # 不显示Nginx的版本号信息
    access_log off;  # 禁用HTTP访问日志

    server {  # 定义具体的一个虚拟主机的配置块
        listen 888;  # 监听端口号为888
        server_name phpmyadmin;  # 设置虚拟主机的域名
        index index.html index.htm index.php;  # 设置虚拟主机的默认索引文件
        root  /www/server/phpmyadmin;  # 设置虚拟主机的根目录路径

        location ~ /tmp/ {  # 匹配包含/tmp/的URL路径
            return 403;  # 返回403禁止访问的状态
        }

        include enable-php.conf;  # 包含启用PHP的配置文件

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {  # 匹配图片文件的URL路径
            expires      30d;  # 设置缓存过期时间为30天
        }

        location ~ .*\.(js|css)?$ {  # 匹配JavaScript和CSS文件的URL路径
            expires      12h;  # 设置缓存过期时间为12小时
        }

        location ~ /\. {  # 匹配以.开头的隐藏文件的URL路径
            deny all;  # 禁止访问
        }

        access_log  /www/wwwlogs/access.log;  # 设置访问日志路径
    }

    include /www/server/panel/vhost/nginx/*.conf;  # 包含指定目录下的其他所有虚拟主机配置文件
}

2. 防盗链开启

直接在 nginx 里配配置,不过记得添加白名单(如 logo 和 avatar),配置如下:

# 资源防盗链(指定目录or指定文件类型)
# location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
location /upload/ {
  access_log off;
  # 域名白名单,去掉则阻止所有非本站请求
  valid_referers none blocked server_names *.bbchin.com 127.0.0.1 localhost ~\.google\. ~\.baidu\. ~\.qq\.;
  if ($invalid_referer) {
    rewrite ^/ https://cdn.jsdelivr.net/gh/qinhua/cdn_assets/img/robber.jpg;
  }
  proxy_pass http://127.0.0.1:8090;
}

如果用到了 OSS 对象存储和 CDN,请务必在相关控制台中配置防盗链和策略。

0

评论区