一级标题为思维导图的链接 :)
写时复制(copy-on-write),COW
limit_except GET {
allow 192.168.1.0/24;
deny all;
}
server {
add_header RealPath $realpath_root;
}
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.0.0.0/16;
deny all;
}
location /admin/ {
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.ngxpasswd;
}
location /basic_status {
stub_status;
}
对于回显信息的说明:
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
# Active connections: 活动状态的连接数;
# accepts:已经接受的客户端请求的总数;
# handled:已经处理完成的客户端请求的总数;
# requests:客户端发来的总的请求数;
# Reading:处于读取客户端请求报文首部的连接的连接数;
# Writing:处于向客户端发送响应报文过程中的连接数;
# Waiting:处于等待客户端发出请求的空闲连接数;
gzip on;
gzip_comp_level 6;
gzip_min_length 64;
gzip_proxied any;
gzip_types text/xml text/css application/javascript;
server {
listen 443 ssl;
server_name www.hgzerowzh.com;
root /vhosts/ssl/htdocs;
ssl on;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_protocols sslv3 tlsv1 tlsv1.1 tlsv1.2;
ssl_session_cache shared:sslcache:20m;
}
valid_referers none blocked server_names *.hgzerowzh.com hgzerowzh.* ~\.hgzero\.;
if($invalid_referer) {
return http://www.hgzerowzh.com/invalid.jpg;
}
# 当使用IE浏览器访问时,重定向到/msie/目录下的对应文件
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie/$1 break;
}
# 当http请求的方法为POST,则直接返回405状态码,即Method not Allowed
if ($request_method = POST) {
return 405;
}
# 当请求的资源文件不存在,则直接退出当前匹配,并代理至本机,这种情况下由本机来提供服务,如提供错误页面
if (!-f $request_filename) {
break;
proxy_pass http://127.0.0.1;
}
# 当访问的是hgzerowzh.com下任意主机,则重定向到www.hgzerowzh.com主机下的对应目录
if ($http_host ~* "^(.*)\.hgzerowzh\.com$") {
set $domain $1;
rewrite ^(.*) http://www.hgzerowzh.com/$domain/ break;
}
# 最后一种URL重写为一个新的主机名站点,但使用URL重写的效率比较低下,远不如直接为此站点独立定义一个虚拟主机
user nginx; # 定义worker进程的用户和用户组
pid /var/run/nginx.pid; # 使用的pid文件
load_module /path/to/file; # 加载的模块
include /path/to/file; # 导入的配置文件
worker_processes auto; # worker进程数
worker_cpu_affinity auto; # worker进程和cpu绑定
worker_priority 0; # 定义worker进程的nice值
worker_rlimit_nofile 3600; # 所有的worker进程能够打开的文件数量上限
daemon on; # 是否守护进程模式
master_process on; # 是否启用master/worker模式
error_log /var/log/nginx/error.log warn; # 错误日志的记录位置及级别
events {
worker_connections 1024; # 每个worker的最大并发连接数
use epoll; # 使用的并发连接处理方法
accept_mutex on; # 是否启用互斥锁,On意味着由各worker轮流处理新请求,
# Off意味着每个新请求的到达都会通知所有的worker进程
}
http {
tcp_nodelay on; # 在keepalived模式下的连接,多个报文不要合并一起发
tcp_nopush on; # 开启sendfile时,让数据包挤满到一定程度才发送,挤满之前被阻塞
sendfile on; # 启用零拷贝模式
keepalive_timeout 65; # 保持连接的超时时间,设置0为不开启
keepalive_requests 100; # 一次长连接的最大资源请求数
keepalive_disable none; # 指定对哪种浏览器禁用长连接
send_timeout time; # 向客户端发送响应报文的超时时间,
# 指两次写操作之间的间隔时间
client_body_buffer_size 16k; # 指定接收客户端请求报文的body部分的缓冲区大小,
# 默认为16k,超出此大小就放到下面的临时路径中
client_body_temp_path /var/tmp/client_body 1 2 2;
# 设定用于存储客户端请求报文body部分的临时路径和子目录结构和数量
aio on; # 是否开启aio功能
open_file_cache max=2000 inactive=10; # 缓存打开文件的元数据
open_file_cache_valid 60s; # 缓存有效性的检查频率,默认60s
open_file_cache_min_uses 3; # 指定在活动有效期内,最小的命中次数
open_file_cache_errors on; # 是否缓存查找时发生错误的文件一类的信息
limit_rate 0; # 限制客户端的传输速率(bytes/second)
limit_except GET { # 限制使用除了GET请求之外的方法时,允许的客户端
allow 192.168.1.0/24;
deny all;
}
gzip on; # 启用gzip压缩响应报文
gzip_comp_level 6; # 指定压缩比
gzip_disable none; # 对于指定的浏览器不启用压缩功能
gzip_min_length 64; # 启用压缩功能的响应报文大小阈值
gzip_buffers 32 4k; # 支持实现压缩功能时为其配置的缓冲区数量及每个缓冲区的大小
gzip_proxied any; # nginx作为代理服务器时,在何种条件下启用压缩功能
# gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;
gzip_types mime-type; # 压缩过滤器,仅对此处设定的MIME类型的内容启用压缩功能
# 实现防盗链功能
valid_refers none blocked server_names *.hgzero.com hgzero.* ~\.hgzero\.; # 设置合法的referer来源
# valid_refers none | blocked | server_names | string ...; # none表示没有referer,blocked表示referer值为空
if($invalid_referer){
return http://www.hgzero.com;
}
server { # 定义一个虚拟主机,要注意虚拟主机的匹配规则
# listen IP:PORT [default_server] [ssl] [http2|spdy] [backlog=NUM] [rcvbuf=size] [sndbuf=size];
listen 80;
# 定义主机名加域名,即网站地址,注意这里的匹配机制顺序:精确匹配>左侧*通配符>右侧*通配符>正则匹配
server_name www.hgzero.com *.hgzero.com hgzero.* ~^www\d+.hgzero\.com$;
# 在响应首部中添加字段,这里添加了一个RealPath字段,值为变量realpath_root的值
add_header RealPath $realpath_root;
# 使用ssl(要在监听ip和端口后面加上ssl字段)
ssl on;
ssl_certificate cert.pem; # ssl证书的位置
ssl_certificate_key cert.key; # 与证书匹配的私钥文件
ssl_protocols sslv3 tlsv1 tlsv1.1 tlsv1.2; # 指定ssl协议版本,默认为tlsv1 tlsv1.1 tlsv1.2
# ssl_protocols [SSLv2][SSLv3][TLSv1][TLSv1.1][TLSv1.2];
ssl_session_cache shared:sslcache:20m; # 设置ssl的session缓存
# ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
ssl_session_timeout 30s; # 设置客户端一侧的连接可以复用ssl session cache中缓存的ssl参数的有效时长
#############################
location [ = | ^~ | ~ | ~* ] uri { # 要特别注意location容器的匹配规则
root /data/one/;
}
#############################
location /images/ {
root /data/hgzero/; # 站定根目录,相当于uri中左边的/
# alias /data/hgzero/; # 定义站点别名,相当于uri中右边的/
index index.html index.php; # 站点主页文件
}
# 自定义错误页面
error_page 404 /notfound.html;
location = /notfound.html {
root /data/nginx/error_pages;
}
# 实现用户访问控制
location /admin/ {
alias /webapps/app1/data/;
auth_basic "Admin Area"; # 提示的字符串
auth_basic_user_file /etc/nginx/.ngxpasswd; # 用户名及密码认证文件,可以用htpasswd生成
}
# 获取nginx状态信息,这里最好要定义访问控制权限
location /basic_status {
stub_status;
}
# 指定日志记录的格式
log_format main ‘$remote_addr‘ - $remote_user [$time_local] "$request"‘
‘$status $body_bytes_sent "$http_referer"‘
‘"$http_user_agent" "$http_x_forwarded_for"‘‘;
# $remote_addr:客户端地址,如果有代理服务器,则要使用$http_x_forwarded_for
# $remote_user:远程客户端用户名称
# $time_local:记录访问时间和时区信息
# $request:记录用户访问时的url和http协议信息,如:"GET /favicon.ico HTTP/1.1"
# $status:记录客户端请求时返回的状态码
# $body_bytes_sent:记录服务器响应给客户端的主体大小
# $http_referer:记录此次请求是从哪个链接过来的
# $http_user_agent:记录客户端的浏览器信息
# $http_x_forwarded_for:记录每一级代理的信息
access_log /spool/logs/nginx-access.log main; # 指定日志文件的存放位置
# access_log /spool/logs/nginx-access.log gzip buffer=32k;
open_log_file_cache max=2000; # 缓存各日志文件相关的元数据信息
# open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
}
}
原文:https://www.cnblogs.com/hgzero/p/12890859.html