Nginx 配置

nignx基础配置及说明

#window 下可以不指定用户
#user nobody;
#linux 下必须指定
user administrator administrators; #配置用户或者组,默认为nobody;用于显示谁运行的nginx

#根据cpu内核决定数量
worker_processes 2;


events {
#设置单个工作进程最大连接数102400
worker_connections 102400;
#(惊群现象)优化同一时刻只有一个请求而避免多个睡眠进程被唤醒的设置,on为防止被同时唤醒,默认为off,因此nginx刚安装完以后要进行适当的优化。
accept_mutex on;
#打开同时接受多个新网络连接请求的功能。
multi_accept on;
#使用epoll事件驱动,因为epoll的性能相比其他事件驱动要好很多;其他事件驱动模型,select|poll|kqueue|resig|/dev/poll|eventport
use epoll;
}


http {
#文件扩展名与文件类型映射表 MIME——Multipurpose Internet Mail Extension(多用途因特网邮件扩展)
#mime.types可在同nginx.confx目录下看到,即支持多种数据类型
include mime.types;
#默认文件类型,application/octet-stream为http前后台交互类型,这个类型表示他是一个字节流,浏览器默认处理字节流的的方式就是下载,所以他是主要用于下载
default_type application/octet-stream;
指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息
#fastcgi_intercept_errors on#默认off
proxy_intercept_errors
#sendfile解决了传统的文件传输里面(read/write方法),
#传统的文件传输方式:
#1.调用read函数,文件被copy到内核缓冲区
#2.read函数返回,文件数据从内核缓冲区copy到用户缓冲区
#3.write函数调用,将文件数据从用户缓冲区copy到内核与socket相关的缓冲区
#4.数据从socket缓冲区copy到相关协议引擎。
#sendfile文件传输方式:
#1.sendfile系统调用,文件数据被copy至内核缓冲区
#2.再从内核缓冲区copy至内核中socket相关的缓冲区
#3.最后再socket相关的缓冲区copy到协议引擎
sendfile on;
server_names_hash_bucket_size 128;
#指定来自客户端请求头的headerbuffer大小,设置为32KB
client_header_buffer_size 32k;
#指定客户端请求中较大的消息头的缓存最大数量和大小,这里是4个32KB
large_client_header_buffers 4 32k;
#上传文件大小
client_max_body_size 356m;
#nginx的HttpLog模块指定,指定nginx日志的输出格式,输出格式为access
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access日志存在未知
access_log /var/log/nginx/access.log access;
#开启高效模式文件传输模式,将tcp_nopush和tcp_nodely两个指另设置为on,用于防止网络阻塞。
sendfile on;
tcp_nopush on;
tcp_nodely on;
#链接超时时间 默认65s;
keepalive_timeout 65;


开启缓存
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;



#负载均衡实现
#1)、轮询(默认)
  #每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
#2)、weight
  #指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
#2)、ip_hash
  #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
#3)、fair(第三方)
  #按后端服务器的响应时间来分配请求,响应时间短的优先分配。
#4)、url_hash(第三方)
upstream tomcat_server{
#实现多台服务器之间session的共享
ip_hash;
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8080 weight=1;
}
server {
#单链接请求上限次数。
keepalive_requests 120;
#监听端口
listen 80;
#监听地址
server_name localhost;


#请求的url / 全匹配; 过滤条件通过正则表达是书写
location / {
#启用proxy_cache,并指定key_zone。另外,如果proxy_cache off表示关闭掉缓存
proxy_cache my_cache;
#请求转向tomcat_server
proxy_pass http://tomcat_server;
#拒绝该IP访问
#deny 127.0.0.1;
#允许该ip访问
#allow 136.19.111.5;
}
#对jsp和do结尾的url也去访问tomcat服务
location ~ .(jsp|do)$ {
proxy_pass http://tomcat_server;
}

#对js、css、png、gif结尾的都去访问根目录下查找
location ~ .(js|css|png|gif)$ {
root F:/javaweb;
}

#错误日志存放位置
#错误日志级别:常见的错误日志级别有[debug | info | notice | warn | error | crit | alert | emerg],级别越高记录的信息越少。
error_log logs/error_www.abc.com.log error;
#报错50?错误访问本地html/50x页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#报错404错误访问本地html/404页面 自定义的404页面必须大于512字节,否则可能会出现IE默认的404页面
error_page 404 /404.html;
location = /404.html{
root html;
}
//没有适当的处理方法nginx不会拦截错误;
}



}

本文章是我结合网上资料和一些大神的文章总结出来的,若是有哪些地方有错误,希望能指出,我会及时修改。谢谢

原文地址:https://www.cnblogs.com/AsaltedFish/p/9565255.html