# 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,请务必在相关控制台中配置防盗链和策略。
评论区