#user  nobody;  #配置用户或者组,默认为nobody nobody。
worker_processes  1; #允许生成的进程数,默认为1

#error_log  logs/error.log;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
#error_log  logs/error.log  notice;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
#error_log  logs/error.log  info;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg

#pid        logs/nginx.pid;  #指定nginx进程运行文件存放地址


events {
    #accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    #multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;  #最大连接数,默认为512
}


http {
    include       mime.types;  #文件扩展名与文件类型映射表
    default_type  application/octet-stream;  #默认文件类型,默认为text/plain
    client_max_body_size 100m;  #控制全局nginx所有请求报文大小,可以在http块,server块,location块
    #log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';   #自定义格式

    #access_log  logs/access.log  main;   #combined为日志格式的默认值

    sendfile        on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    #tcp_nopush     on; 

    #keepalive_timeout  0;
    keepalive_timeout  65;  #连接超时时间,默认为75s,可以在http,server,location块。

	#gzip压缩
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 6;
    gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
    gzip_disable "MSIE [1-6]\.";
    gzip_vary on;
	
    #解决head丢失
	underscores_in_headers on;
#自定义的服务器列表  用于反向代理及负载均衡
	upstream api_server{
       #ip_hash;   #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 
       #server 192.168.100.71:8100 weight=10;   #指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。默认为1.weight越大,负载的权重就越大。
      #server 192.168.100.71:8100  down;  #down 表示当前的server暂时不参与负载 
		server 192.168.100.71:8100;
     #server 192.168.100.71:8100  backup   #backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
       #fair;   # (第三方)  #按后端服务器的响应时间来分配请求,响应时间短的优先分配。
	}
	#网页
	
	#设置非安全连接永久跳转到安全连接
	server{
		listen 80;  #监听端口
		server_name  www.chengit.cn chengit.cn;   #监听地址
		add_header Strict-Transport-Security max-age=15768000;  #告诉浏览器有效期内只准用 https 访问
		location / {     #永久重定向到 https 站点
			if ($request_method ~ ^(POST)$) {
				proxy_pass https://$server_name;
				break ;
			}
		}
		#return 301 https://$server_name$request_uri;  #301重定向
		rewrite ^(.*) https://$server_name$1 permanent;   #重定向
	}
	
	server {
		#启用 https, 使用 http/2 协议, nginx 1.9.11 启用 http/2 会有bug, 已在 1.9.12 版本中修正
		listen 443 ssl ;
		server_name  www.sceo360.com;
		#告诉浏览器不要猜测mime类型
		add_header X-Content-Type-Options nosniff;

		ssl on;
		#证书路径
		ssl_certificate /usr/local/webserver/nginx/ssl/www_image.pem;
		#私钥路径
		ssl_certificate_key /usr/local/webserver/nginx/ssl/www_image_private.key;
		#安全链接可选的加密协议
		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
		#可选的加密算法,顺序很重要越靠前的优先级越高
		ssl_ciphers 'CHACHA20: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-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4;';
		# SSLv3  TLSv1 握手过程一般使用客户端的首选算法如果启用下面的配置则会使用服务器端的首选算法
		ssl_prefer_server_ciphers on;
		#储存SSL会话的缓存类型和大小
		ssl_session_cache shared:SSL:10m;
		#缓存有效期
		ssl_session_timeout 60m;

		root www;   #根目录
		location / {    #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
			index  index.html  index.htm;   #设置默认页
		}
		location ^~ /api/ {    #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
			proxy_pass http://api_server;   #请求转向api_server 定义的服务器列表
			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_http_version 1.1;           #用于websocket链接时需要用到
        		#proxy_set_header Upgrade $http_upgrade;    #用于websocket链接时需要用到
        		#proxy_set_header Connection "Upgrade";   #用于websocket链接时需要用到
		}
	}
	
}