nginx 基本配置

一、nginx基本配置

user nobody;
worker_processes 4;    # 设置工作进程数,通常是cpu核数或者cpu核数的2倍
events{
    worker_connections 1024;  # 设置并发最大连接数
}
http{
    server{
            listen  80;  #监听的端口,监听到后访问 html/server1这个地址
            server_name  192.168.1.2;  # 识别的域名

            charset utf-8;  # 设置url编码

            access_log  logs/server1.access.log combined; # off (关闭) 
            loction /     # 虚拟主机本地根目录(两种匹配模式,普通字符串匹配和正则匹配)
                {
                    index index.html index.htm  # 默认的首页
                    root html/server1;  # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1
        }

            location ^~ /test/ {
                deny all; # 拒绝请求,返回403 
                (allow all;) # 允许请求
        }

            #syntax:location [=|~|~*|^~|@]/url/{...}
            #无开头引导字符或以=开头表示普通字符串匹配
            #以~或~*开头表示正则匹配,~*表示不区分大小写
            #^~开头表示关闭正则匹配的功能,普通模式下匹配到后就不继续寻在正则
            #@
    }

    error_page 404  /404.html; #定义各类错误类型
    error_page 403 @page403; # 发生403错误时指向http://www.xxx.xxx.com页面
    location @page403{
        proxy_pass http://www.xxx.xxx.com
    }

    server{
            listen  192.168.1.3:80   # 监听的IP地址
            server_name  192.168.1.3   # 设置虚拟主机的名称
            access_log  logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined
            loction /
                {
                    index index.html index.htm
                    root html/server2;   # IP地址与server2文件夹进行绑定
        }
    }
}

二、nginx日志文件配置
在nginx中conf中的nginx.conf有一段关于日志文件的配置

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:客户端IP地址
$remote_user:客户端的用户名
$request:请求的url
$status:请求状态
$body_bytes_sent:记录nginx服务器返回给用户的字节数
$http_referer:客户访问的原网页(用户从哪里来)
$http_user_agent:客户浏览器访问信息,比如用户通过火狐浏览器浏览则记录火狐浏览器的类型信息
$http_x_forwarded_for:客户端IP地址

三、制作按时间切割日志文件的脚本
1.制作切割日志脚本cutlog.sh

D = $(data + %Y%m%d)
mv /usr/local/nginx/logs/access.log ${D}.log
kill -USR1 $(cat /usr/loacl/nginx/nginx.pid)

2.使用定时执行命令
(1)crontab -e 进入编辑
(2)输入 23 59 *** /bin/bash /usr/local/nginx/logs/cutlog.sh # 每天23:59定时执行cutlog.sh这个脚本
(3)保存

四、nginx的缓存配置
浏览网页时,浏览器会把网页上的一些信息(图片)存储到本地,第二次浏览的时速度加快。若本地这些信息过多,缓存文件就会非常大,需要定期清理。
vim nginx.conf打开nginx的默认配置

user nobody;
worker_processes 4;    # 设置工作进程数,通常是cpu核数或者cpu核数的2倍
events{
    worker_connections 1024;  # 设置并发最大连接数
}
http{
    server{
            listen  192.168.1.2:80  #监听这个IP地址,监听到后访问 html/server1这个地址
            server_name  192.168.1.2
            access_log  logs/server1.access.log combined; # off (关闭) 
            loction /     # 虚拟主机本地根目录
                {
                    index index.html index.htm  # 默认的首页
                    root html/server1;  # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1
        }
            location ~.*\.(jpg|png|swf)${    # 所有以.jpg|.png|.swf结尾的文件
                   expires 30d;    # 设置每30天自动清除
            }
            localtion ~.*\.(css|js)?${
                    expires 1h;   # 设置每1h自动清除
            }
    }
    server{
            listen  192.168.1.3:80   # 监听的IP地址
            server_name  192.168.1.3   # 设置虚拟主机的名称
            access_log  logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined
            loction /
                {
                    index index.html index.htm
                    root html/server2;   # IP地址与server2文件夹进行绑定
        }
    }
}

五、nginx的压缩功能配置
nginx支持gzip压缩技术,通过这个技术,可以把网页的内容大小压缩成原来的30%。
vim nginx.conf

user nobody;
worker_processes 4;    # 设置工作进程数,通常是cpu核数或者cpu核数的2倍
events{
    worker_connections 1024;  # 设置并发最大连接数
}
http{
    server{
            listen  192.168.1.2:80  #监听这个IP地址,监听到后访问 html/server1这个地址
            server_name  192.168.1.2
            access_log  logs/server1.access.log combined; # off (关闭) 
            gzip  on;   # 开启gzip压缩功能
            gzip_min_length 1k; # 文件大小大于1k才压缩
            gzip_buffers  4 16k; # 申请用于缓存的内存大小为4个16k的数据流
            gzip_http_version 1.1 # 声明只有http版本为1.1的网页开启gzip压缩功能
            gzip_vary on; # 开启判断客户端浏览器是否支持gzip压缩功能
            loction /     # 虚拟主机本地根目录
                {
                    index index.html index.htm  # 默认的首页
                    root html/server1;  # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1
        }
            location ~.*\.(jpg|png|swf)${    # 所有已.jpg|.png|.swf结尾的文件
                   expires 30d;    # 设置每30天自动清除
            }
            localtion ~.*\.(css|js)?${
                    expires 1h;   # 设置每1h自动清除
            }
    }
    server{
            listen  192.168.1.3:80   # 监听的IP地址
            server_name  192.168.1.3   # 设置虚拟主机的名称
            access_log  logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined
            loction /
                {
                    index index.html index.htm
                    root html/server2;   # IP地址与server2文件夹进行绑定
        }
    }
}

六、nginx的自动列目录配置
当客户端通过浏览器访问服务器上的某一文件夹的时候,如果该文件夹有默认的首页文件index.html,那么用户就会自动访问到index.html这个网页.实现自动列目录需要的条件:1.访问文件夹下不存在index之类的默认首页文件 2.服务器配置了自动列表功能。

user nobody;
worker_processes 4;    # 设置工作进程数,通常是cpu核数或者cpu核数的2倍
events{
    worker_connections 1024;  # 设置并发最大连接数
}
http{
    server{
            listen  192.168.1.2:80  #监听这个IP地址,监听到后访问 html/server1这个地址
            server_name  192.168.1.2
            access_log  logs/server1.access.log combined; # off (关闭) 
            loction /     # 虚拟主机本地根目录
                {
                    index index.html index.htm  # 默认的首页
                    root html/server1;  # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1
                    autoindex  0n; # 开启自动列目录
        }
    }
    server{
            listen  192.168.1.3:80   # 监听的IP地址
            server_name  192.168.1.3   # 设置虚拟主机的名称
            access_log  logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined
            loction /
                {
                    index index.html index.htm
                    root html/server2;   # IP地址与server2文件夹进行绑定
        }
    }
}

配置后即使nginx虚拟主机的安装目录/usr/local/nginx/html/server1下没有index.html或index.htm也可以返回整个目录结构,而不是403

nginx 基本配置_第1张图片

六、nginx的优化
阻塞和非阻塞网络模型
同步阻塞模型,一请求一进程,当进程(线程)增加到一定程度后,更多CPU时间浪费到切换,性能下降,负载率不高,nginx是基于事件爱你的非阻塞多路复用模型,一个进程可以在短时间响应大量的请求。

user nobody;
worker_processes 4;    # 设置工作进程数,通常是cpu核数或者cpu核数的2倍

worker_rlimit_nofile 655350;  # 每进程最大可打开文件描述符数量(网络端口,设备,磁盘文件),用完后新的连接会产生502类错误 

worker_connections 200000; # 每个工作进程的最大连接数(一般一个浏览器会同时打开两条连接,如果反向代理,nginx到后端服务器的连接也会占用连接数,静态服务器最大连接maxClient = worker_connections * worker_processes / 2,反向代理maxClient = worker_connections * worker_processes / 4)

use epoll; # 指明使用哪种网络模型epoll或kquene

worker_cpu_affinity 0001 0010 0100 1000  # 四核四进程,避免进程在cpu间切换的开销

events{
    worker_connections 1024;  # 设置并发最大连接数
}
http{
    server{
            listen  192.168.1.2:80  #监听这个IP地址,监听到后访问 html/server1这个地址
            server_name  192.168.1.2
            # access_log  logs/server1.access.log combined; # off (关闭) 
            access_log off # 关闭可减少IO开销,但一般不建议
            error_log  logs/error.log crit  # 只记录严重错误日志

            sendfile on; # 启用内核复制模式,减少复制次数

            keepalive_timeout  30s; # 降低每个连接的alive时间,可在一定程度上提高可响应连接数,一般可适当降低

            gzip on; # 启动内容压缩,有效降低网络流量

            gzip_min_length 1000; # 过短的内容压缩效果不佳,压缩过程会浪费系统资源

            gzip_comp_level 4; # 可选0~9,压缩级别越高,压缩率越高,对系统性能要求越高

            gzip_type text/plain text/css application/json # 压缩内容类别         

            open_file_cache max=655350 inactive=20s; # 静态文件缓存(最大缓存数量,文件为使用存活期),存放于内存

            open_file_cache_valid 30s;# 验证缓存有效期时间间隔

            open_file_cache_min_uses 2; # 有效期内文件最少使用次数


            loction /     # 虚拟主机本地根目录
                {
                    index index.html index.htm  # 默认的首页
                    root html/server1;  # 代表nginx虚拟主机的安装目录/usr/local/nginx/html/server1
        }
    }
    server{
            listen  192.168.1.3:80   # 监听的IP地址
            server_name  192.168.1.3   # 设置虚拟主机的名称
            access_log  logs/server1.access.log combined; # 设置日志文件存放路径,格式为combined
            loction /
                {
                    index index.html index.htm
                    root html/server2;   # IP地址与server2文件夹进行绑定
        }
    }
}

你可能感兴趣的:(javaweb,nginx,nginx,server)