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;
 
  }
 }
原文地址:https://www.cnblogs.com/veggiegfei/p/11001026.html