nginx配置文件详解

1、配置文件

upstream abc {
server 192.168.2.188:8080 weight=1 max_fails=3 fail_timeout=30;
定义集群,weight=权重轮询,max_fails=请求失败次数,fail_timeout=失败超时时间
}

server {
listen 8000;
server_name web1.abc.com;

location / {
proxy_read_timeout 300;                          #连接成功后,等候后端服务器响应时间(后端服务器处理请求的时间)
proxy_connect_timeout;                           #后端服务器连接的超时时间
proxy_send_timeout;                              #后端服务器数据回传时间,在规定时间内后端服务器必须传完所有的数据
proxy_set_header Host $host;                     #代理服务器发送请求头部中加入host字段信息,用于后端多个虚拟主机。
proxy_set_header X-Real-IP $remote_addr;         #远端真实ip,多级代理中正向代理记录真实ip,反向代理记录连接的客户端ip
proxy_set_header X-Forwarded-For $remote_addr;   #远端真实ip,多级代理会追加记录
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   #在原有请求头X-Forwarded-For字段的基础上增加了连接nginx的服务器ip地址
proxy_set_header X-Forwarded-For "$http_x_forwarded_for, $remote_addr"; #相当于上面的命令
proxy_next_upstream error timeout http_404 http_502 non_idemponent(请求方法POST,LOCK,PATCH);   #访问错误,允许转发到其他服务器 } } server { listen
8000; server_name aaa.com access_log logs/aaa.access.log; #访问日志 error_log logs/aaa.error.log; #错误日志 location ^~ /.well-known { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://www.weixin.com; }
location
/tomcat { proxy_read_timeout 300; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass abc; }
location
/solr { proxy_read_timeout 300; proxy_pass abc
} server { listen
8000; server_name images.abc.com; access_log logs/image.access.log; error_log logs/image.error.log;
location
/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 150; proxy_send_timeout 100; proxy_read_timeout 100; proxy_buffers 4 32k; #缓冲区的数量和大小 client_max_body_size 1m; #上传文件最大值 client_body_buffer_size 64k; #请求体缓存区大小 root /home/tom/data/images/; #图片目录 } location /images.abc.com { rewrite '^/images.abc.com/(.*)$' http://images.abc.com/$1; } } server { listen 8001; server_name api.tt.com; access_log logs/proxy.access.log; error_log logs/proxy.error.log;
location
/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass https://www.tt.com; } } log_format mainAccess '$remote_addr - $remote_user [$time_local] $http_host $request_method "$uri"
"$query_string" $status "$http_x_forwarded_for" [$request_body] [$ssl_client_s_dn]
'; 日志格式 $remote_addr #客户端地址 211.28.65.253 $remote_user #客户端用户名称 -- $time_local #访问时间和时区 18/Jul/2012:17:00:01 +0800 $http_host #请求地址,即浏览器中你输入的地址(IP或域名) www.abc.com 192.168.100.100 $request_method #访问页面的请求方法 get $uri #请求的文件和路径,不包含”?”或者”#”之类的东西 $query_string #GET请求中的参数 foo=123&bar=blahblah;这个变量只可以被修改 $status HTTP #请求状态 200 $http_x_forwarded_for #真实IP地址 $request_body #记录POST请求 $ssl_client_s_dn     #返回建立的SSL连接中客户端证书的DN主题字段 ------------------------------------------------------------------------------------------------------- $upstream_status #upstream状态 200 $body_bytes_sent #发送给客户端文件内容大小 1547 $http_referer #url跳转来源 https://www.baidu.com/ $http_user_agent #用户终端浏览器等信息 $upstream_addr #后台upstream的地址,即真正提供服务的主机地址 10.10.10.100:80 $request_time #整个请求的总时间 0.205 $upstream_response_time #请求过程中,upstream响应时间 0.002日志格式 客户端地址 客户端用户 访问时间和时区 $request #请求的URI和HTTP协议 GET /article-10000.html HTTP/1.1 $request_uri #请求的整个字符串,包含了后面请求的东西 $ssl_cipher #返回SSL连接中使用的密码字段的算法。 RC4-SHA $ssl_client_serial #返回SSL连接中客户端证书的序列号。 $ssl_client_s_dn #返回SSL连接中客户端证书的DN主题字段。 $ssl_client_i_dn #返回SSL连接中客户端证书的DN发行者字段。 $ssl_protocol #返回SSL连接中使用的协议。 TLSv1 $ssl_session_id #需要0.8.20以上版本。 $ssl_client_verify #如果客户端证书审核通过,这个变量为“SUCCESS”。 $ssl_client_raw_cert #返回SSL连接的PEM格式客户端证书; server { listen 9001; server_name api.tt.com; access_log logs/proxy.access.log mainAccess; error_log logs/proxy.error.log;
location / {
proxy_set_header Host 'api.tt.com';
proxy_set_header X-SSL-CERT $ssl_client_raw_cert;                 #通过X-SSL-Cert包头向服务器提供证书信息
proxy_ssl_certificate     /home/tom/data/cert/apiclient_cert.pem;
proxy_ssl_certificate_key /home/tom/data/cert/apiclient_cert.key;
proxy_pass https://123.123.123.123;
}
}

server { 
listen 9002;
access_log logs/proxy.access.log;
error_log logs/proxy.error.log;

location
/ { resolver 8.8.8.8; #正向代理,DNS 解析 IP 地址 proxy_pass $scheme://$http_host$request_uri;
#
$scheme: 所用的协议,http或https #$http_host: 始终等于HTTP_HOST请求标题 #$host :等于$http_host,小写且无端口号,若HTTP_HOST不存在或空值,等于server_name的值 #$request_uri: 完整url中去最前面$host的部分,如:www.qq.com/a/b?c=6,$request_uri== /a/b?c=6 proxy_buffers 256 4k; #缓冲区的数量和大小 proxy_max_temp_file_size 0k; #关闭临时文件缓冲 } } server { listen 9003; server_name 192.168.2.2; access_log logs/proxy.access.log; error_log logs/proxy.error.log;
location
/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://192.168.2.100:9000; } } server { listen 9004; server_name 192.168.2.2; access_log logs/file.access.log; error_log logs/file.error.log;
location
/ { root /home/tom/data/files; } } server { listen 9000; server_name 192.168.2.2 down.abc.com; access_log logs/file.access.log; error_log logs/file.error.log;
location
/ { root /home/tom/data/files; } } server { listen 9443; server_name 192.168.2.2 down.abc.com; access_log logs/file.access.log; error_log logs/file.error.log;
location
/ { root /home/tom/data/files; } } 第一版配置: proxy_set_header X-Forwarded-For $remote_addr; #如上配置只能增加负载均衡ip地址,丢失了客户端真实ip和任意中间代理ip 第二版配置 proxy_set_header X-Forwarded-For "$http_x_forwarded_for, $remote_addr"; #如上配置在原有请求头X-Forwarded-For字段的基础上增加了连接nginx的服务器ip地址 第三版配置(最为简单) proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #$proxy_add_x_forwarded_for已经实现了第二版的功能,直接使用该内置变量即可

2、配置文件详解

user nginx;                                             指定 nginx 运行的用户及用户组
worker_processes 4;                                     启动进程数量==CPU核心的数量
pid logs/nginx162.pid;                       PID 文件
error_log logs/nginx_error.log crit;             定义日志文件及级别

events {
use epoll;                                              事件处理模型,可以不指定,Nginx会自动选择最佳的
worker_connections 100000;                              单个进程最大并发量
--    ps:仅修改Nginx并发数是无效的,还需要系统参数
--    cat /etc/security/limits.conf
--    * soft nofile 100000
--    * hard nofile 100000
}

http {
include mime.types;                                     设定mime类型
default_type application/octet-stream;              默认文件类型
server_tokens off;                          不显示 Nginx 具体版本号
charset UTF-8;                                        设置字符集
proxy_intercept_errors on;                              当Client请求时,若tomcat抛出404,nginx会跳转到一个固定页面
open_file_cache max=131072 inactive=60s;            打开文件缓存数量及缓存时间
open_file_cache_valid 80s;                              多久检查一次缓存的有效信息
open_file_cache_min_uses 1;                             访问次数超过 1 次才被缓存
server_names_hash_bucket_size 128;                      服务器名字的hash表大小
client_header_buffer_size 4k;                           默认请求包头信息的缓存
large_client_header_buffers 8 128k;                     大请求包头部信息的缓存个数及容量
client_max_body_size 1500m;                             上传文件大小,PHP默认上传文件不超过2M
sendfile on;                                            开启高效文件传输模式
tcp_nopush on;                              当包累计到一定大小才发送,防止网络阻塞,和 tcp_nodelay “互斥”
fastcgi_intercept_errors on;                   开启传递4xx或5xx错误信息到客户端,反向代理用proxy_intercept_errors on 
keepalive_timeout 60;                         保持会话的超时时间,只有tcp_nodelay on,keepalive_timeout才有效
tcp_nodelay on;                             防网络阻塞
gzip on;                                  开启gzip压缩功能  
gzip_min_length 1k;                          最小压缩的容量
gzip_buffers 4 16k;                         压缩缓存大小
gzip_http_version 1.0;                       压缩版本
gzip_comp_level 2;                          压缩级别
gzip_types text/plain application/x-javascript text/css application/xml;    压缩类型
gzip_vary on;                                       给代理服务器加个vary标识,判断客户端浏览器是否要压缩,IE6不支持gzio压缩

include limit/limit_zone.conf                   限制配置文件
include cache/cache_zone.conf;                   缓存配置文件
include conf/vhost/*.conf;                    虚拟主机配置文件
}

 

posted on 2018-08-16 14:54  五光十色  阅读(631)  评论(0编辑  收藏  举报

导航