nginx.conf配置示例

  • 配置详解
# https://www.iteye.com/blog/aokunsang-2058787

#运行用户
user  nginx;
#启动进程,通常设置成和 cpu 的数量相等
worker_processes auto;

#全局错误日志及 PID 文件
error_log /var/nginx/logs/error.log;
pid  /var/nginx/logs/nginx.pid;
# 日志格式
log_format access '$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 用以记录客户端的 ip 地址;
# $remote_user :用来记录客户端用户名称;
# $time_local : 用来记录访问时间与时区;
# $request : 用来记录请求的 url 与 http 协议;
# $status : 用来记录请求状态;成功是 200,
# $body_bytes_s ent :记录发送给客户端文件主体内容大小;
# $http_referer :用来记录从那个页面链接访问过来的;
# $http_user_agent :记录客户毒啊浏览器的相关信息;


# 工作模式及连接数上限
events {
	multi_accept on; #告诉nginx收到一个新连接通知后接受尽可能多的连接
	worker_connections 1024; #单个后台 worker process 进程的最大并发链接数
	use epoll; #epoll 是多路复用 IO(I/O Multiplexing)中的一种方式,但是仅用于 linux2.6 以上内核,可以大大提高 nginx 的性能
}

#设定 http 服务器,利用它的反向代理功能提供负载均衡支持
http {
    charset utf-8;
    include /etx/nginx/mine.types; #设定 mime 类型,类型由 mime.type 文件定义
	sendfile on; #指令指定 nginx 是否调用 sendfile 函数(zero copy方式)来输出文件,对于普通应用,必须设为 on,如果用来进行下载等应用磁盘 IO重负载应用,可设置为 off,以平衡磁盘与网络 I/O 处理速度,降低系统的 uptime
	tcp_nopush on; #告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送
	tcp_nodelay on; #告诉nginx不要缓存数据,而是一段一段的发送--当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值
	#server_tokens off; # 可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的
	log_not_found off;
	types_hash_max_size 2048;
	#设置请求体大小
	client_max_body_size 16M;
	
	#设置请求头和请求体(各自)的超时时间。我们也可以把这个设置低些。  
    client_header_timeout 10;  
    client_body_timeout 10;  
	keepalive_timeout  65; #给客户端分配keep-alive链接超时时间。服务器将在这个超时时间过后关闭链接。我们将它设置低些可以让ngnix持续工作的时间更长
	gzip on; #开启 gzip 压缩

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log warn;


    #设定负载均衡的服务器列表
    upstream mysvr {
        #weigth 参数表示权值,权值越高被分配到的几率越大
        server 192.168.8.1:3128 weight=5;
        server 192.168.8.2:80 weight=1;
        server 192.168.8.3:80 weight=6;
    }

	server {
    	listen 80; #侦听 80 端口
        server_name www.xx.com; #定义使用 www.xx.com 访问
        access_log logs/www.xx.com.access.log access; #设定本虚拟主机的访问日志
        
    	root /app;

        gzip on;
        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;

        error_page 500 502 503 504 /50x.html; # 定义错误提示页面

    	#默认请求
        location / {
            proxy_pass http://tomcat:8080/index # 代理
            root /root; #定义服务器的默认网站根目录位置
            index index.php index.html index.htm; #定义首页索引文件的名称
        }

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

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

        #静态文件,nginx 自己处理
        location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
        	expires 30d; #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点
        	access_log off;
        }

        location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
        	add_header Access-Control-Allow-Origin "*";
        	expires 30d;
        	access_log off;
        }
    }
}

  • location语法
语法规则: location [=|~|~*|^~] /uri/ { … }
= 开头表示精确匹配
^~ 开头表示 uri 以某个常规字符串开头,理解为匹配 url 路径即可。nginx 不对 url 做编
码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa 匹配到(注意是空格)。
~ 开头表示区分大小写的正则匹配
~* 开头表示不区分大小写的正则匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
/ 通用匹配,任何请求都会匹配到。
多个 location 配置的情况下匹配顺序为
首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当
有匹配成功时候,停止匹配,按当前匹配规则处理请求。

你可能感兴趣的:(nginx.conf配置示例)