2.5 Nginx服务器基础配置实例
pay平台nginx配置文件详解
###全局块###
user www www; #指定运行worker process 的用户和用户组
worker_processes 4; #指定Nginx开启的子进程数量
error_log /data/www/logs/nginx/nginx_error.log ; #指定全局错误日志文件
pid /data/www/logs/nginx/nginx.pid; #指定nginx主进程的地址
worker_rlimit_nofile 65535; #指定一个Nginx进程最多可打开的文件描述符数量
##events 块用来指定Nginx的工作模式以及连接上限##
events
{
use epoll; #指定Nginx的工作模式 ,Nginx支持的工作模式又select、poll、kqueue、epoll、rtsig、和
/dev/poll,其中select和poll是标准工作模式,kqueue和 epoll是高效工作模式,epoll用于Linux平台
worker_connections 65535; #指定Nginx中每个进程的最大连接数(即接收客户端的最大请求数)
}
### http块负责HTTP服务器相关的属性配置 ###
http
{
include mime.types; #包含 etc/nginx/mine.type 文件,此文件用于设定文件的mime类型便于nginx识别
default_type application/octet-stream; #设置默认文件类型为二进制流
#nginx用ngx_http_proxy_module模块实现反向代理需求
proxy_redirect off;
proxy_set_header Host $host; #ngx_http_proxy_module模块需要读取的配置文件 修改http请求头
proxy_set_header X-Real-IP $remote_addr; #»ñæip
# X-Forwarded-For 字段表示该请求是由谁发起的
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #»ñúµÄæip
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90; #跟后端服务器连接超时时间,发起握手等候响应时间
proxy_send_timeout 90; #后端服务器回传时间,就是在规定时间内后端服务器必须传完所有数据
proxy_read_timeout 90; #连接成功后等待后端服务器的响应时间,已经进入后端的排队之中等候处理
proxy_buffer_size 4k; #代理请求缓冲区,会保存用户的头信息以供nginx进行处理
proxy_buffers 4 32k; #同上,告诉nginx保存单个用几个buffer最大用多少空间
proxy_busy_buffers_size 64k; #如果系统很忙的时候可以申请最大的 proxy_buffers
proxy_temp_file_write_size 64k; #proxy缓存临时文件的大小
charset utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k; #客户端头信息
large_client_header_buffers 4 32k;
sendfile on; #开启高效的文件传输模式
tcp_nopush on; #设置 tcp_nopush 和 tcp_nodelay 为 on 是为防止网络阻塞。
keepalive_timeout 60; #设置客户端连接保活动的超时时间
#tcp_nodelay on;
gzip on;
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;
# limit_zone crawler $binary_remote_addr 10m;
log_format access_ssl '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
### 开启nginx的缓存功能,需要添加如下两行 ###
#这一行分别表示:创建缓存的时候可能生成一些临时文件存放的位置
proxy_temp_path /home/proxy_temp_dir;
#这一行分别表示:定义缓存存储目录;缓存级别,表示缓存目录的第一级目录是1个字符,第二级目录是2个字符;内核中建立用于缓存缓存数据源数据的空间,查找缓存的时候,先从这个内核空间中找到,缓存数据的源数据,然后再到对应目录中查找缓存;这一行分别表示:缓存的数据,1小时内没有被访问过就删除;缓存空间最大值。
proxy_cache_path /home/passport levels=1:2 keys_zone=cache_passport:200m inactive=1d max_size=30g;
#nginx对于 upstream 默认使用的是基于IP的转发
upstream tomcats_pay { #upstream的负载均衡 采用 ip_hash 轮询策略
#ip_hash;
server 127.0.0.1:8080 max_fails=2 fail_timeout=10s;
}
##server 块用于配置HTTP虚拟服务器 ###
server {
listen 80; #此服务器监听的端口
server_name pay.kedou.com; #指定此服务器的IP地址或域名
#rewrite ^(.*) https://pay.kedou.com$1 permanent; #将HTTP请求重定向到 HTTPS
index index.html index.htm; #定义此虚拟服务器的默认首页地址,按序依次访问定义的文件
root /data/www/ROOT/pay/ROOT ; #定义虚拟服务器的根目录
access_log /data/www/logs/nginx/logs/pay.kedou.com.log access_ssl; #此虚拟服务器的访问日志
location / { #匹配访问路径以/开始的URI
if ($remote_addr ~ "172.16.19.[5|6]") {
access_log off;
}
proxy_next_upstream http_502 http_504 error timeout invalid_header; #失败连接的情形
proxy_pass http://tomcats_pay; #代理哪个web服务器
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; #后端节点机器获取客户端真实ip的第一种方案
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #后端节点机器获取客户端真实ip的第二种方案
break;
#rewrite_by_lua 'eeye.capture_itf_invoke()';
}
#注释掉的如下location块 表示所有静态文件由nginx直接读取不经过 tomcat 或 resin
#location ~ \.(gif|bmp|png|jpg|jpeg|swf|css|js)$ {
# expires 2h;
# root /data/www/ROOT/pay/ROOT ;
# index index.html index.htm;
# break;
# }
location /v/ {
rewrite ^/v/[0-9]+\.[0-9]+.[0-9]+/(.*)$ /$1 break;
root /data/www/ROOT/;
}
location ~ ^/(assets)/ {
root /data/www/ROOT/;
}
}
###配置对HTTPS请求的处理###
server {
listen 443; #监听443端口
server_name kedou.com *.kedou.com; #虚拟服务器域名配置
index login.jsp; #定义此虚拟服务器的默认首页地址
root /data/www/ROOT/pay/ROOT ; #定义虚拟服务器的根目录
ssl on; #开启ssl参数
ssl_certificate 201713478180888.pem; #指定服务器证书
ssl_certificate_key 201713478180888.key; #指定私钥
ssl_session_timeout 5m; #指定 SSL 共享缓存的超时为 5 mins
#ssl_protocols SSLv2 SSLv3 TLSv1; #指定 SSL 协议(Nginx 默认使用)
#以 OpenSSL 库理解的格式指定密码(Nginx 默认使用)
#ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
#ssl_protocols SSLv3 TLSv1;# TLSv1.1 TLSv1.2;
#ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
#ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA
-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA
-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AE
S128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AE
S128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m; #指定 SSL 共享缓存的大小为 10M。
ssl_session_tickets off;
ssl_stapling on; # Requires nginx >= 1.3.7
ssl_stapling_verify on; # Requires nginx >= 1.3.7
location ~ ^/druid {
proxy_pass http://tomcats_pay;
allow 127.0.0.0/24;
allow 192.168.17.0/24;
allow 192.168.172.0/24;
deny all;
access_log off;
}
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header; #失败连接的情形
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
proxy_pass http://tomcats_pay; #代理的哪个服务器
}
location ~ .*\.(jsp|do|html)?$
{
index index.jsp;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://tomcats_pay;
}
location /v/ {
rewrite ^/v/[0-9]+\.[0-9]+.[0-9]+/(.*)$ /$1 break;
root /data/www/ROOT/;
}
location ~ ^/(assets)/ { #静态资源配置 location ~ ^/(assets)/ 指需要访问该localhost下的哪个文件夹
root /data/www/ROOT/; #root指资源在服务器中的绝对路径,此处配置不能出错,出错会找不到资源返回404
}
#log_format access_ssl '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" $http_x_forwarded_for';
access_log /data/www/logs/nginx/logs/pay.kedou.com-1-ssl.log access_ssl;
}
}